设计模式之模板方法模式
来源:互联网 发布:东华软件项目经理待遇 编辑:程序博客网 时间:2024/05/16 06:34
GOF对模板方法模式的定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。Template使得子类可以不改变一个算法的结构而重新定义算法的某些特定步骤。先看下基本代码结构。
public abstract class AbstractClass {public abstract void primitiveOperationA();public abstract void primitiveOperationB();public abstract void primitiveOperationC();public void TemplementMethod() {primitiveOperationA();primitiveOperationB();primitiveOperationC();}}定义两个实现子类
public class ConcreteClassA extends AbstractClass {@Overridepublic void primitiveOperationA() {System.out.println("操作方法A来自具体类A");}@Overridepublic void primitiveOperationB() {System.out.println("操作方法B来自具体类A");}@Overridepublic void primitiveOperationC() {System.out.println("操作方法C来自具体类A");}}public class ConcreteClassB extends AbstractClass {@Overridepublic void primitiveOperationA() {System.out.println("操作方法A来自具体类B");}@Overridepublic void primitiveOperationB() {System.out.println("操作方法B来自具体类B");}@Overridepublic void primitiveOperationC() {System.out.println("操作方法C来自具体类B");}}客户端实现
public class Client {public static void main(String[] args) {AbstractClass A ;A = new ConcreteClassA();A.TemplementMethod();A = new ConcreteClassB();A.TemplementMethod();}}运行截图
使用抽象方法的目的就是给继承的子类重写,从而达到子类个性化定制的目的。
模板方法比较简单而且常用,甚至在Java的类库值也会使用模板方法来提取公共行为到抽象类中,很好的实现了代码的复用平台。一般使用模板模式有如下几种情况:
1.一次性实现算法不变的部分,将可变的部分交给子类实现;
2.子类中的公共行为提取到公共的父类中,并且子类有自己的个性化需求的时候;
3.一般子类需要扩展的地方也是固定的,即仅允许在这些点进行扩展。这也恰恰是模板模式的局限性所在。
以上内容,整理自刘径舟,张玉华编著的《设计模式其实很简单》读书笔记,欢迎转载
阅读全文
0 0
- 设计模式之模板方法模式模板方法模式
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- 设计模式之模板方法
- Java设计模式之模板方法模式
- bean 的生命周期和后处理器
- 多态
- Anomaly Detection-异常检测算法(Coursera-Ng-ML课程)
- pg基于时间点的恢复(PITR)
- 一步一步学Spring Boot(三)视频发布了~~~
- 设计模式之模板方法模式
- java为什么要用接口声明对象而具体类创建对象?
- tomcat-各文件夹作用解析tomcat-各文件夹作用解析
- 关于继承的一点小东西
- 牛客网解题-2017腾讯秋招笔试编程题练习卷
- 最全Pycharm教程(19)——Pycharm编辑器功能之代码折叠
- javascript学习之数组
- 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名
- java深入学习五之字符串