模板模式是类的行为模式。
1.定义:
定义一个操作中算法的骨架(或称为顶级逻辑),将一些步骤(或称为基本方法)的执行延迟到其子类中。
2.模板模式与继承
模板方法恰当地使用了继承。此模式可以用来改写一些拥有相同功能的相关的类,将可复用的一般性行为代码移到基类里面,而把特殊化的行为代码移到子类里面。
3.模板模式中的方法
1)模板方法:
必须由抽象类实现,该方法是一个顶级逻辑,调用任意多个基本方法,子类不应该修改该方法。
2)基本方法:
模板方法所调用的方法,有可细分为抽象方法,具体方法,钩子方法
抽象方法:强迫子类重写的
具体方法:不需要子类重写的,最好声明为final
钩子方法:子类可以重写的,一般是个空方法(钩子方法的命名应该以do开头,这是一个通用规范)
补充:模板模式的设计理念是尽量减少必须由子类置换掉的基本方法的数量(可以理解为尽量减少抽象方法和钩子方法的数量。)
4.重构的原则
总的原则:行为上移,状态下移(抽象类中的具体方法应该尽量多,而成员变量应该尽量少)
- 应当根据行为而不是状态定义一个类
- 在实现行为时,应该尽量用取值方法获取成员变量,而不是直接应用成员变量
- 给操作划分层次。一个类的行为应当放到一个小组核心方法里面,这些方法可以很方便地在子类中置换
- 将状态的确认推迟到子类中去。
5.应用场景:
类加载,dao实现对object的增删改查。
适用的范围:许多应用的实现有许多公共的部分,但细节有差异。
- 从一张数据表,生成许多统计报表。
- severlet对象service方法中doget,dopost方法。
6.实例代码:
Template.java
package com.template; public abstract class Template { /** * 顶级逻辑 */ public final void topOperation() { beforeOperation(); operation(); afterOperation(); } /** * 在操作前执行的方法 */ private void beforeOperation() { System.out.println("this action before the operation!"); } /** * 在操作后执行的方法 */ private void afterOperation() { System.out.println("this action after the operation!"); } /** * 需要推迟到子类中去实现 */ protected abstract void operation(); }
TemplateImpl1.java
package com.template; public class TemplateImpl1 extends Template{ @Override protected void operation() { System.out.println("this action is executed in subclass TemplateImpl1!"); } }
TemplateImpl2.java
package com.template; public class TemplateImpl2 extends Template{ @Override protected void operation() { System.out.println("this action is executed in subclass TemplateImpl2!"); } }
TemplateTest.java
package com.template; public class TemplateTest { public static void main(String[] args) { Template t1 = new TemplateImpl1(); t1.topOperation(); Template t2 = new TemplateImpl2(); t2.topOperation(); } }
运行结果:
this action before the operation!
this action is executed in subclass TemplateImpl1!
this action after the operation!
this action before the operation!
this action is executed in subclass TemplateImpl2!
this action after the operation!
相关推荐
《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。设计模式是软件工程领域中经过实践验证的、解决常见问题的有效方案,它们代表了在特定上下文中,针对特定问题的最优...
5.10 TEMPLATE METHOD(模板方法) —类行为型模式 214 5.11 VISITOR(访问者)—对象行为型 模式 218 5.12 行为模式的讨论 228 5.12 1 封装变化 228 5.12.2 对象作为参数 228 5.12.3 通信应该被封装还是被分布 229 ...
- 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - 访问者模式(Visitor):表示一个作用于某对象...
设计模式——模板方法模式模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤使用场景:当不变和可...
本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与应用,特别是针对刘伟教授的相关课程的课后习题及模拟试题的解答。 设计模式分为三大类:创建型、结构型和行为型模式。...
### 设计模式精解——GoF23中设计模式解析 #### 重要性与起源 设计模式是软件工程领域的一项重要研究,它提供了一系列解决常见软件设计问题的模板。GoF23指的是由Erich Gamma、Richard Helm、Ralph Johnson和John ...
C#设计模式(23种设计模式) 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype) 结构型: 6. 适配器...
### 设计模式之模板方法模式解析 #### 一、引言 在软件开发过程中,我们经常面临这样的场景:有一些步骤是固定的,而某些步骤则可能因具体实现而异。为了解决这类问题,设计模式中引入了一种叫做“模板方法模式”的...
本文实例讲述了Python设计模式之模板方法模式。分享给大家供大家参考,具体如下: ...设计模式——模板方法模式 模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子
传统的`HttpResponse`方法将数据直接与视图混合,不符合Django的模型-视图-控制器(MVC)设计模式。为了实现模板应用,我们使用了`render`函数。`render`接收请求对象`request`、要渲染的模板名称`'HelloWorld....
模板方法模式(Template Method Pattern)是一种行为设计模式,它允许在父类中定义算法的框架,然后由子类提供具体的实现。这种模式的核心是“模板方法”,它在父类中定义了一个操作的步骤顺序,并将某些步骤声明为...
### 设计模式精解——GoF 23种设计模式解析及C++实现 #### 0. 引言 设计模式作为面向对象编程的核心组成部分,是软件开发者在长期实践中总结出来的最佳实践。通过深入理解这些设计模式,我们可以更好地进行面向...
《研磨设计模式》实战是IT领域中关于软件设计的一份重要资料,它主要探讨了设计模式在实际项目中的应用。设计模式是软件工程中经过长期实践总结出的通用问题解决方案,是解决常见设计问题的经验总结。这份PPT可能是...
这份名为“设计模式PPT——25种设计模式详解”的资料,显然是一个深入探讨设计模式的教程,它通过PDF格式对25种主要的设计模式进行了详尽的阐述。 首先,我们要理解设计模式的基本概念。设计模式不是代码,而是一种...
《HeadFirst设计模式》是一本深受开发者欢迎的书籍,它以独特、易理解的方式介绍了软件设计中的重要概念——设计模式。设计模式是经验丰富的开发者在解决常见问题时总结出的最佳实践,它们为软件设计提供了可复用的...
面向对象的程序设计语言C++...以上只是C++编程中的一些基础知识点,实际的C++学习还需要深入到模板元编程、智能指针、并发编程、设计模式等多个高级主题。对于初学者来说,理解并掌握这些概念是进阶C++编程的关键步骤。
### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 0. 引言 设计模式是软件工程领域的一个重要概念,它为解决特定问题提供了一套标准的解决方案。《设计模式精解——GoF 23种设计模式解析及C++实现源码...
《系统架构设计师 设计模式》是一本针对软考系统架构设计师考试的重要参考资料,它深入探讨了软件架构设计中的核心概念——设计模式。设计模式是软件工程中经过实践验证的、解决常见问题的有效方法,是软件开发人员...