作者:fbysss
msn:jameslastchina@hotmail.com
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处
关键字:设计模式
Bridge模式
接口和实现代码分离 ,指的是什么模式?(Proxy?Bridge?Observer)
典型的例子:飞机有客机和货机,制造商有空客、波音、麦道。
使用桥接模式设计,
interface AirPlane{
AirPlaneMaker apm ;
}
PassengerPlane implements AirPlan{}
CargoPlane implements AirPlan{}
interface AirPlaneMaker{
}
AirBus implements AirPlaneMaker{};
MD implements AirPlaneMaker{};
Boeing implements AirPlaneMaker{};
其中AirPlane叫抽象化(Abstraction)角色,AirPlaneMaker叫实现化(implementor)角色;AirPlane的子类叫修正抽象化(Refined Abstraction)角色,AirplaneMaker的子类叫具体实现化(Concrete Implementor)角色
JDBC/ODBC不是桥接模式,而是适配器模式。
Strategy模式和Template Method模式:
两者很相似,核心都是多态的体现。形式上,Strategy包含了一个Template Method模式,但是两者考虑的角度不一样:
Strategy中的策略类一般是一个动词,强调行为,相当于把一个方法抽象出来单独作为一个类,然后这个类采用Template Method进行重构,再组合到原类中;Template Method强调层次性,由上自下设计,类以名词居多。
一般在进行系统架构设计时,往往要使用Template Method模式,而对某些行为方法进行扩展性考虑时,往往要用到Strategy模式。通过上述分析,可以说这么说:从形式上看,Strategy 模式大于 Template Method模式;从应用层次上看,Template Method大于Strategy模式。