1700475908
❑增加产品,继承Product类,或者继承House类,你要把房子分为公寓房、别墅、商业用房等。
1700475909
1700475910
你唯一要修改的就是Client类。类都增加了,高层模块也需要修改,也就是说Corp类和Product类都可以自由地扩展,而不会对整个应用产生太大的变更,这就是桥梁模式。
1700475911
1700475912
1700475913
1700475914
1700475916
设计模式之禅 29.2 桥梁模式的定义
1700475917
1700475918
桥梁模式(Bridge Pattern)也叫做桥接模式,是一个比较简单的模式,其定义如下:Decouple an abstraction from its implementation so that the two can vary independently.(将抽象和实现解耦,使得两者可以独立地变化。)
1700475919
1700475920
桥梁模式的重点是在“解耦”上,如何让它们两者解耦是我们要了解的重点,我们先来看桥梁模式的通用类,如图29-4所示。
1700475921
1700475922
1700475923
1700475924
1700475925
图29-4 桥梁模式通用类图
1700475926
1700475927
我们先来看桥梁模式中的4个角色。
1700475928
1700475929
❑Abstraction——抽象化角色
1700475930
1700475931
它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类。
1700475932
1700475933
❑Implementor——实现化角色
1700475934
1700475935
它是接口或者抽象类,定义角色必须的行为和属性。
1700475936
1700475937
❑RefinedAbstraction——修正抽象化角色
1700475938
1700475939
它引用实现化角色对抽象化角色进行修正。
1700475940
1700475941
❑ConcreteImplementor——具体实现化角色
1700475942
1700475943
它实现接口或抽象类定义的方法和属性。
1700475944
1700475945
桥梁模式中的几个名词比较拗口,大家只要记住一句话就成:抽象角色引用实现角色,或者说抽象角色的部分实现是由实现角色完成的。我们来看其通用源码,先看实现化角色,如代码清单29-16所示。
1700475946
1700475947
代码清单29-16 实现化角色
1700475948
1700475949
public interface Implementor{
1700475950
1700475951
//基本方法
1700475952
1700475953
public void doSomething();
1700475954
1700475955
public void doAnything();
1700475956
1700475957
}
[
上一页 ]
[ :1.700475908e+09 ]
[
下一页 ]