标签(空格分隔):桥接模式
桥接模式: 将抽象部分与它的实现部分分离,使它们都可以独立的变化
由于对象的继承关系是在编译的时候确认的,所以不能做到在运行时改变父类继承的实现。同时,子类的实现必须在父类的基础上进行,和父类有相当紧密的依赖关系。这样就导致父类一旦有功能变化的时候都会导致子类同时发生变化,此时如果继承下父类的实现不适合解决新问题的时候,子类就必须重写自己对应的实现,或者选择继承其他更贴合自己业务场景的类作为自己的父类。这种子父关系自己的相互依赖关系导致了一个功能的变化可能会造成相当大的业务变化。
- 依照合成/聚合复用原则,可以使用拥有的方式来代替继承关系。
桥接模式主要解决:子类需要继承的父类是一个不稳定状态的类,功能极有可能发生变化且这种变化是不可控的,这个时候使用继承会导致类的变动频繁,出现类爆炸问题,这个时候,使用桥接模式,将其分离开来,减少他们之间的耦合关系。
优点:将对象之间的抽象和实现分离开,让抽象也成为可独立可实现的部分,增加系统的扩展能力。
VMWare虚拟机中就存在桥接模式(bridged networking),在这种模式下,VMWare虚拟出来的操作系统脱离与宿主机器之间的父子关系,就像是局域网中的一台独立的主机,虚拟机不必依赖宿主系统的IP/DNS功能。它可以访问网内任何一台机器。桥接模式将虚拟系统脱离出来,由原有的继承状态(Nat模式,虚拟系统必须通过宿主系统中的网络地址转换Nat功能来访问公网)独立出来,转换为和宿主机器一样的独立的个体,改为被宿主机器持有。