设计模式之-桥接模式
桥接模式定义:将抽象部分与它的实现部分分离,使他们都可以独立的变化。主要运用的是“合成/聚合复用原则”。
使用合成/复用原则的好处:有助于你保持每个类被装转,并被集中在当个任务上,这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物
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("运行手机通讯录"); } } abstract class HandsetBrand { protected HandsetSoft soft;//保护成员,该类内部和继承类中可以访问。 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(); } }
客户端
static void Main(string[] args) { HandsetBrand ab; ab = new HandsetBrandN(); ab.SetHandsetSoft(new HandsetGame()); ab.Run(); ab.SetHandsetSoft(new HandsetAddressList()); ab.Run(); ab = new HandsetBrandM(); ab.SetHandsetSoft(new HandsetGame()); ab.Run(); ab.SetHandsetSoft(new HandsetAddressList()); ab.Run(); Console.ReadKey(); }
根据合成/聚合复用原则,如果要增加一个功能,那么只需要增加这个类就好了。这样的设计很好符合了开发封闭原则。
为什么不使用继承:
继承是一种强耦合的结构,父类变,子类就会变,所有在使用继承时,一定要在是“is-a”的关系再考虑使用。