看设计模式——模板方法与策略模式

模板方法模式(Template Method)和策略模式都是用来解决通用算法和使用的上下文环境分离的代码抽象问题,前者思路是靠继承,后者则靠委托。

模板方法模式很简单,就是提供一些可以用来继承覆盖的通用方法,然后在上下文环境中提前调用通用这些方法,类似做stub。派生类继承后可以改写通用方法,从而完成更多具体的算法实现。缺点是导致派生类里面的具体算法实现和基类无形中绑定了。

策略模式相对复杂一些,本质是把通用方法委托给了另一个抽象类(通常为context类,context类可以根据不同的要求,动态切换策略)。但是更好解决了问题,因此个人理解在可能的设计里都更推荐策略模式取代模板方法。


本文是全系列中第5 / 7篇:再看设计模式

打赏作者
提交看法

抢沙发

还没有评论,你可以来抢沙发