设计模式学习笔记-bridge
1.意图:将抽象部分与实现部分分离,使它们都可以独立的变化。
理解为:这句话中的抽象与实现并不是指OO中的抽象类与子类实现,而是说“将一个事物中多个维度的变化分离”。
该句中的抽象部分与实现部分分离,可以联想李建忠老师的TANK和PlatformImplementation例子。
2. 要点:
a.组合:
bridge使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系。使得抽象(TANK型号)和实现(不同的平台)可以沿着各自的维度来变化。
依据:组合优于继承。
比如,TANK抽象类中,通过构造方法来注入平台实现。
b.子类化:
什么叫抽象和实现沿着各自维度来变化呢?——子类化。
所谓抽象与实现沿着各自维度来变化,即“子类化”它们。比如说不同的TANK型号和不同的平台子类。得到各个子类之后,就可以任意组合它们,从而得到不同平台上的不同型号。
c.类似于多继承方案,但优于多继承。
d.应在“有两个非常强的变化维度”的时候应用BRIDGE。
有时候即使有两个变化维度,但其中一个维度的变化并不强烈时,两个变化不会导致纵横交错的结果,则不一定要用BRIDGE。
e.BRIDGE支持N个维度的变化。
多个维度就组合多个实现就OK了。
理解为:这句话中的抽象与实现并不是指OO中的抽象类与子类实现,而是说“将一个事物中多个维度的变化分离”。
该句中的抽象部分与实现部分分离,可以联想李建忠老师的TANK和PlatformImplementation例子。
2. 要点:
a.组合:
bridge使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系。使得抽象(TANK型号)和实现(不同的平台)可以沿着各自的维度来变化。
依据:组合优于继承。
比如,TANK抽象类中,通过构造方法来注入平台实现。
b.子类化:
什么叫抽象和实现沿着各自维度来变化呢?——子类化。
所谓抽象与实现沿着各自维度来变化,即“子类化”它们。比如说不同的TANK型号和不同的平台子类。得到各个子类之后,就可以任意组合它们,从而得到不同平台上的不同型号。
c.类似于多继承方案,但优于多继承。
d.应在“有两个非常强的变化维度”的时候应用BRIDGE。
有时候即使有两个变化维度,但其中一个维度的变化并不强烈时,两个变化不会导致纵横交错的结果,则不一定要用BRIDGE。
e.BRIDGE支持N个维度的变化。
多个维度就组合多个实现就OK了。