设计模式漫谈之桥接模式

今天调休了,闲来无事,再扯一个设计模式。我不是单纯的说设计模式,更多的是说编程思想上的东西。人心隔肚皮,人眼看到的不一定是真相,所以说女孩结婚后流的泪是当初眼拙脑残的结果。不过爱情中没有对错,爱情本来就是折磨死人不犯法。

说说继承与组合,继承偏重于对象本身具有;组合偏重于包括其他对象的东西(静的,动的)。设计层面的东西都是抽象的,所以要用抽象或接口来隔离实际功能。

不扯了,今天说桥接模式,这种结构型模式都是对象之间关系的模式。在数据库模型中,1对1的关系,只用把某个表的主键存在另一个表中,1对多的关系转成面向对象的时候就是多属于1,所以只用把1的主键放在多中。多对多的关系,可以转成两个1对多,就是需要建中间表。

直接上例子,我来解释例子吧。

//这个是抽象类,表示思想上的东西,只描述抽象的东西。

//比如我有个功能,我还知道某种东西可以实现这个功能。

abstract class HandsetBrand
{

//存了一个抽象引用
protected HandsetSoft soft;

//给引用赋值对象

//this就是一个占位实例

public void SetHandsetSoft(HandsetSoft soft)
{
this.soft = soft;
}
//定义一个约束(抽象方法我也称为约束)
public abstract void Run();

}

//这个对象拥有此功能

//这是一种继承与组合的混合使用

class HandsetBrandN : HandsetBrand
{
public override void Run()
{
soft.Run();
}
}

//同样这个对象拥有这个功能。

class HandsetBrandM : HandsetBrand
{
public override void Run()
{
soft.Run();//其实我内部是通过其他对象实现我这个功能的。
}
}

//这种抽象的对象可以实现这个功能

abstract class HandsetSoft
{

public abstract void Run();
}

//具体的实现者

class HandsetGame : HandsetSoft
{
public override void Run()
{
Console.WriteLine("运行手机游戏");
}
}

//具体的实现者

class HandsetAddressList : HandsetSoft
{
public override void Run()
{
Console.WriteLine("运行手机通讯录");
}
}

HandsetBrand ab;
ab = new HandsetBrandN();

//桥接就是连接了对象HandsetBrand与HandsetSoft

ab.SetHandsetSoft(new HandsetGame());
ab.Run();

ab.SetHandsetSoft(new HandsetAddressList());
ab.Run();

总结:这种结构型模式就是描述对象与对象之间关系的。人又称为社会人,假如人与人或人与其他对象没关系,那这个人活不长,没有研究价值。所以在内存中,我们运行的对象是有关系的对象。面向对象正是描述对象之间关系的,最常用的关系继承,组合,接口实现等

相关推荐