桥接模式
2019-09-25 本文已影响0人
yummy觉一
对《大话设计模式》的学习总结,以备后用。
继承关系存在的问题
很多情况下,使用继承会带来麻烦,比如,对象的集成关系在编译时就已经定义好了,所以无法在运行时改变从父类继承的实现。子类的实现与它的父类有非常紧密的依赖关系,以致于父类实现中的任何变化,必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重新或被其他更适合的类替换,这种依赖关系限制了灵活性并最终限制了复用性。
合成/聚合复用原则
尽量使用合成/聚合,尽量少使用类继承
优先使用对象的合成、聚合,将有助于你保持每个类被封装,并被集中在单个任务上,这样类和类继承层次会保持较小规模,并且不太可能增长为不可控制的庞然大物。
合成、聚合都是关联关系的特殊种类。聚合标识一种弱的拥有关系,体现了A对象可以包含B对象,但B对象不是A对象的一部分;合成则是一种强的拥有关系,体现了严格的整体与部分的关系,整体和部分的生命周期一样。
比如:大雁有两个翅膀,大雁和翅膀是整体与部分的关系,属于合成关系;大雁是群聚动物,每只大雁都属于一个雁群,一个雁群可以有多个大雁,属于聚合关系。附一张UML截图
![](https://img.haomeiwen.com/i9207343/e48ba11a75ee1b39.png)
桥接模式
将抽象部分与它的实现部分分离,使它们可以独立的变化
实现系统可能有多角度分类,每一种分类都有可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。
多交单据分类后采用聚合、合成的关系进行组装。
桥接模式的UML
![](https://img.haomeiwen.com/i9207343/3ae525d6cc4bdcf2.png)