首页 > 代码库 > 桥接模式
桥接模式
桥接模式:将抽象部分和它的实现部分分离,使它都可以独立的变化
桥接模式的定义还是不好理解,我的理解是实现系统可能有多角度分类,每一种分类都有可能变化,你们就把这种对角度分离出来让他们独立变化,减少他们之间的耦合,也就说,在发现我们需要对角度去分类实现对象,而只用继承会造成大量的类的增加,不能满足开放-封闭原则时,可以考虑,优先运用对象的合成/聚合,保持每个类被封装,并被集中到任务中,这样类和类继承层次会保持较小的规模,并且不太可能增加到不可控制的庞然大物
例如:手机可以按照手机品牌和手机软件分类,如果不按照合成/聚合原则,每次增加手机品牌或手机软件都会增加不必要的类,为了应对在某个方向上面的变化不会影响到其他方向的变化,就是让‘手机’既按照品牌分类,也可以按照功能分类
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 HandsetBrand ab; 6 ab = new HandsetBrandN(); 7 8 ab.SetHandsetSoft(new HandsetGame()); 9 ab.Run(); 10 11 ab.SetHandsetSoft(new HandsetAddressList()); 12 ab.Run(); 13 14 ab = new HandsetBrandM(); 15 16 ab.SetHandsetSoft(new HandsetGame()); 17 ab.Run(); 18 19 ab.SetHandsetSoft(new HandsetAddressList()); 20 ab.Run(); 21 22 Console.Read(); 23 } 24 } 25 26 //手机品牌 27 abstract class HandsetBrand 28 { 29 protected HandsetSoft soft; 30 31 //设置手机软件 32 public void SetHandsetSoft(HandsetSoft soft) 33 { 34 this.soft = soft; 35 } 36 //运行 37 public abstract void Run(); 38 39 40 } 41 42 //手机品牌N 43 class HandsetBrandN : HandsetBrand 44 { 45 public override void Run() 46 { 47 soft.Run(); 48 } 49 } 50 51 //手机品牌M 52 class HandsetBrandM : HandsetBrand 53 { 54 public override void Run() 55 { 56 soft.Run(); 57 } 58 } 59 60 //手机品牌S 61 class HandsetBrandS : HandsetBrand 62 { 63 public override void Run() 64 { 65 soft.Run(); 66 } 67 } 68 69 70 //手机软件 71 abstract class HandsetSoft 72 { 73 74 public abstract void Run(); 75 } 76 77 //手机游戏 78 class HandsetGame : HandsetSoft 79 { 80 public override void Run() 81 { 82 Console.WriteLine("运行手机游戏"); 83 } 84 } 85 86 //手机通讯录 87 class HandsetAddressList : HandsetSoft 88 { 89 public override void Run() 90 { 91 Console.WriteLine("运行手机通讯录"); 92 } 93 } 94 95 //手机MP3播放 96 class HandsetMP3 : HandsetSoft 97 { 98 public override void Run() 99 {100 Console.WriteLine("运行手机MP3播放");101 }102 }
桥接模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。