桥接模式

定义

事物类型本身有着多维度的变化,当我们在面对这样的处境时,一味的继承去扩展,会使得维度低的类型非常臃肿,代码耦合度会非常高。如何的解耦,设计的思想告诉我们---尽量用组合代替继承,这就引入了桥接模式。使用组合代替继承这就是桥接的原理所在。

类图

代码

 1  public interface IMobilePhone
 2     {
 3         void Call();
 4         void SendMessage(string message);
 5     }
 6     public class NormalPhone : IMobilePhone
 7     {
 8 
 9         public void Call()
10         {
11             Console.WriteLine("使用普通手机打电话");
12         }
13 
14         public void SendMessage(string message)
15         {
16             Console.WriteLine("使用普通手机发送消息:"+message);
17         }
18     }
19     public class ItelligentPhone : IMobilePhone
20     {
21 
22         public void Call()
23         {
24             Console.WriteLine("使用智能手机打电话");
25         }
26 
27         public void SendMessage(string message)
28         {
29             Console.WriteLine("使用智能手机发送消息:" + message);
30         }
31     }
32     public abstract class HighPricePhone
33     {
34         public IMobilePhone MobilePhone { get; set; }
35         public HighPricePhone(IMobilePhone mobilePhone)
36         {
37             this.MobilePhone = mobilePhone;
38         }
39         public virtual void Call()
40         {
41             MobilePhone.Call();
42         }
43         public virtual void SendMessage(string message)
44         {
45             MobilePhone.SendMessage(message);
46         }
47         public abstract void Cost();
48     }
49     public class SunPhone : HighPricePhone
50     {
51         public override void Cost()
52         {
53             Console.WriteLine("it is soso");
54         }
55     }
56     public class AppPhone : HighPricePhone
57     {
58         public override void Cost()
59         {
60             Console.WriteLine("it is not bad");
61         }
62     }
View Code

总结

举的例子还是非常简单。如果不用桥接模式则会是智能手机继承至手机接口,高价智能手机(SunPhone,AppPhone)又继承至智能手机接口,当遇到再多的扩展时,我们再继承下去。那样的话就比较糟糕了。而当用桥接方式时,是一定维度的扩展变成组成的元素,通过内部调用方式去实现,不失为一个好的方案。

posted @ 2015-10-16 00:54  Tim_et  阅读(257)  评论(0编辑  收藏  举报