桥接模式(Bridge)-手机软件模式何时统一

桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立变化。

合成/聚合复用原则(CARP),尽量使用合成/聚合,尽量不要使用类继承。

聚合:表示一种弱的"拥有"关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;合成则是一种强的"拥有"关系,体现了严格的部分与整体的关系,部分和整体的生命周期一样[DPE]。

//实现代码:

 1 namespace Bridge //桥接模式。2017.1.1 16:26 by ldb
 2 {
 3 /// <summary>
 4 /// 手机软件抽象类
 5 /// </summary>
 6 abstract class HandSetSoft
 7 {
 8 public abstract void Run();
 9 
10 }
11 /// <summary>
12 /// 手机游戏类
13 /// </summary>
14 class HandSetGame : HandSetSoft
15 {
16 public override void Run()
17 {
18 Console.WriteLine("运行手机游戏");
19 }
20 }
21 /// <summary>
22 /// 手机通讯录类
23 /// </summary>
24 class HandSetAddressList : HandSetSoft
25 {
26 public override void Run()
27 {
28 Console.WriteLine("运行手机通讯录");
29 }
30 }
31 //手机品牌类
32 abstract class HandSetBrand
33 {
34 protected HandSetSoft soft;
35 //设置手机软件
36 public void SetHandSetSoft(HandSetSoft soft)
37 {
38 this.soft = soft;//构造器注入类。
39 }
40 //运行
41 public abstract void Run();
42 }
43 /// <summary>
44 /// 手机品牌N类
45 /// </summary>
46 class HandSetBrandN:HandSetBrand
47 {
48 public override void Run()
49 {
50 soft.Run();
51 }
52 }
53 /// <summary>
54 /// 手机品牌M
55 /// </summary>
56 class HandSetBrandM : HandSetBrand
57 {
58 public override void Run()
59 {
60 soft.Run();
61 }
62 }
63 class Program
64 {
65 static void Main(string[] args)
66 {
67 HandSetBrand hb;
68 
69 Console.WriteLine("***手机品牌N***"+"\n");
70 hb = new HandSetBrandN();
71 hb.SetHandSetSoft(new HandSetGame());
72 hb.Run();
73 
74 //
75 hb.SetHandSetSoft(new HandSetAddressList());
76 hb.Run();
77 
78 Console.WriteLine("***手机品牌M***"+"\n");
79 //手机品牌M
80 hb = new HandSetBrandM();
81 hb.SetHandSetSoft(new HandSetGame());
82 hb.Run();
83 
84 //
85 hb.SetHandSetSoft(new HandSetAddressList());
86 hb.Run();
87 
88 Console.ReadKey();
89 }
90 }
91 }
92 
93  

 

posted @ 2017-06-10 12:52  longdb  阅读(270)  评论(0编辑  收藏  举报