[周五派] 行为模式-模板方法设计模式
当你只希望客户端扩展某个特定算法步骤, 而不是整个算法或其结构时, 可使用模板方法模式。
Java 程序库中模版方法的示例:
-
java.io.InputStream、java.io.OutputStream、java.io.Reader和java.io.Writer的所有非抽象方法。 -
java.util.AbstractList、java.util.AbstractSet和java.util.AbstractMap的所有非抽象方法。 -
javax.servlet.http.HttpServlet, 所有默认发送 HTTP 405 “方法不允许” 错误响应的doXXX()方法。 你可随时对其进行重写。
识别方式: 模版方法可以通过行为方法来识别, 该方法已有一个在基类中定义的 “默认” 行为。
模板方法模式基于继承机制: 它允许你通过扩展子类中的部分内容来改变部分算法。 策略基于组合机制: 你可以通过对相应行为提供不同的策略来改变对象的部分行为。 模板方法在类层次上运作, 因此它是静态的。 策略在对象层次上运作, 因此允许在运行时切换行为。
参考:
- Refactoring.Guru
- 《Android源码设计模式解析与实战》

浙公网安备 33010602011771号