桥接模式:
把抽象和实现解耦,使得它们可以独立地变化。十分常见,可能你已经用到了,但是还不知道它就是这种模式。
类图:
举例:
家里的家用电器,它们都是由开关控制的。假如电器是:电灯和电扇,而开关有圆形开关,方形开关等样式,那么电器与开关的组合方式,类似笛卡尔积。此外,任何时候,我们都可以在不更换开关的情况下换掉灯泡,也可以在不接触灯泡或者风扇的情况下更换开关,而不会存在灯和开关必须整体更换的情况。那么是怎么做到的呢?是通过电线来解耦的,我们在抽象这一问题时,虽然没有电线,但是有OOD的封装。
可以定义抽象开关类:Switch,有待实现的方法:on(),off(),然后定义圆形开关CircleSwitch,SquareSwitch都继承自抽象Switch。同样我们抽象出IElectricalEquipment电器,有powOn(),powerOff()方法,然后定义点灯Light和电扇Fan类实现IElectricalEquipment接口。现在需要让电器与开关相连,可以采用:抽象类Switch中,持有IElectricalEquipment电器接口,也就是按照上面的类图可以实现电器与开关的解耦,并符合OCP原则。代码见:https://github.com/hejianchao/Patterns-in-Java 。
推荐:http://blog.163.com/xiaokangzhijia@126/blog/static/1659548562010111843618596/