1、问题场景
场景: 在面向对象那个设计实现中,比如某一个业务逻辑在不同的细节中有不同的实现,但是逻辑的框架是一致的,
问题: 通过继承或者组合怎么来设计逻辑框架?
2、解决办法
模板模式:定义操作算法的一个骨架,而将这些操作步骤延迟到子类当中,使得子类可以根据需要重新定义算法执行步骤(算法可理解为业务流程)
策略模式:将逻辑封装到一个个类中,通过组合的方式实现具体的业务流程,再通过委托的方式将抽象接口的实现委托给组合对象实现。
UML图

两种模式的优缺点:模板模式--易于修改和扩展那些被复用的实现;破坏了封装性,继承父类中的实现细节暴露给了子类,父类更改时不得不更改子类,弗雷继承的实现在运行期间不能改变。
策略模式--“黑盒”复用,被包含的对象细节外部不可见,封装性好;但是系统中对象过多。
备注:在面向对象的设计当中有一条法则--优先使用组合,而非继承。
---------------------------------------------------------------------------
Name:一个奔跑中的loser
E-mail:chenfeiyoucan@163.com
_________________________________________
|