Template Method
动机
在软件构建过程中,对于某一项任务,它常常有稳定的整体
操作结构,但各个子步骤
却又很多改变的需求,或者由于固有的原因,(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。
如何在稳定操作结构的前提下,来灵活应对各个子步骤的变化或晚期实现需求。定义
定义一个操作中的算法骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method 使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。Demo
红色部分是Libraries或者框架实现的步骤,灰色部分是应用实现,主流程框架较为稳定的情况下将主流程放在libraries,应用开发只需要override步骤2和4就行(比如servlet)。
总结
Template Method模式是一种非常基础性的设计模式,在面向对象系统中有着大量的应用。它用最简洁的机制(虚函数的多态性) 为很多应用程序框架提供了灵活的扩展点,是代码复用方面的基本实现结构。
除了可以灵活应对子步骤的变化外, “不要调用我,让我来调用你” 的反向控制结构是Template Method的典型应用。
在具体实现方面,被Template Method调用的虚方法可以具有实现,也可以没有任何实现(抽象方法、纯虚方法),但一般推荐将它们设置为protected方法。
适合框架设计,库的设计,比如servlet,spring中会有使用。
赏
使用支付宝打赏
使用微信打赏
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章