设计模式--桥接模式
定义:
将抽象部分与它的实现部分分离,使它们能够独立的变化.
关键词:
bridge
结构图:
应用场景:
实现系统可能有多角度分类,而且每一种分类都有变化时,那么把这种多角度分离出来,就可以让他们独立变化,减少它们之间的耦合.
例子:
类图:
代码:
public class Tel { protected string name; protected Game game; public Tel(string name, Game game) { this.name = name; this.game = game; } public void SetGame(Game game) { this.game = game; } public void Run() { HttpContext.Current.Response.Write(name+"-"); game.Run(); } } public class TelM : Tel { public TelM(string name, Game game) : base(name, game) { } } public class TelN : Tel { public TelN(string name, Game game) : base(name, game) { } } public abstract class Game { public abstract void Run(); } public class Game1 : Game { public override void Run() { HttpContext.Current.Response.Write("魂斗罗 is Runing!<br/>"); } } public class Game2 : Game { public override void Run() { HttpContext.Current.Response.Write("坦克 is Runing!<br/>"); } }
页面调用:
protected void Page_Load(object sender, EventArgs e) { Game g1 = new Game1(); Game g2 = new Game2(); Tel t1 = new TelM("苹果", g1); Tel t2 = new TelM("诺基亚", g1); t1.Run(); t2.Run(); Response.Write("<hr/>"); t1.SetGame(g2); t2.SetGame(g2); t1.Run(); t2.Run(); }
效果:
设计原则:
合成/聚合复用原则:尽量使用合成/聚合,而不要使用是使用类继承.聚合表示一种弱的拥有关系,即:A对象可以包含B对象,但B不是A对象的一部分.合成表示一种强的拥有关系,即:体现了严格的整体-部分关系,部分和整体的生存周期一致.