创建型模式,共五种: 工厂方法模式、 抽象工厂模式、 单例模式、 建造者模式、 原型模式。


结构型模式,共七种: 适配器模式、 装饰器模式、 代理模式、 外观模式、 桥接模式、 组合模式、 享元模式。


行为型模式,共十一种: 策略模式、 模板方法模式、 观察者模式、 迭代子模式、 责任链模式、 命令模式、 备忘录模式、 状态模式、 访问者模式、 中介者模式、 解释器模式。



 



桥接模式



 



结构型设计模式,其实就是通过封装或者组合的方式,优化改进代码结构



 



目的:解决多维度的变化



途径:变化封装,哪里变化封装哪里



缺点:代码复杂化,对于使用端需要了解更多细节



 



 



使用场景:有3个手机:苹果、诺基亚、OPPO,它们的系统分别是Iphone、Winphone、Android,



    苹果手机对应iphone系统,



    诺基亚手机对应winphone系统,



    oppo手机对应android系统



 



那么: 苹果Class里实现Iphone



    诺基亚Class里实现Winphone



    OPPOClass里实现Android



 



如果业务增加,



    苹果手机想拥有winphone系统和android系统,



    诺基亚手机想拥有iPhone系统和android系统,



    oppo手机想拥有iPhone系统和winphone系统,



 



那么: 新增苹果2Class里实现winphone



    新增苹果3Class里实现android



    新增诺基亚2Class里实现iPhone



    新增诺基亚3Class里实现android



    新增OPPO2Class里实现iPhone



    新增OPPO3Class里实现winphone



 



那么问题来了,类的数量=手机品牌数量M * 系统数量N,  如果手机品牌继续增加,系统数量也继续增加,那么类的数量将是成倍数的增加,如果再引入美版、港版、大陆版,那么类的数量将继续成倍增加



 



为了解决多维度的变化,就诞生了桥接模式来解决这类问题



把系统和手机还有版本分离开



把系统封装成接口,由Iphone、winphone、android去实现它



把手机封装成接口,由苹果、诺基亚、OPPO去实现它



把版本封装成接口,由美版、港版、大陆版去实现它



 



这样的话,哪个手机想实现什么系统,想拥有什么版本,直接在上端灵活的去调用即可,既方便扩展,同时,类的数量=手机品牌数量M +系统数量N



 



总结:桥接模式通过变化封装,解决多维度的变化,既方便扩展,又减少类的数量,同时也实现了解耦,但是缺点也很明显,就是代码复杂了,使用端需要了解更多的细节(知道手机的品牌,还要知道手机的系统和手机的版本,才能去灵活调用)。所以,如果简单的逻辑,直接用即可,不必刻意使用桥接模式去解决问题。



 



以上是本人通过学习,去理解和总结的,如果有什么不当之处,还请大牛指正!