一、什么是模板方法模式

  Template Method模式也叫模板方法模式,是 行为模式之一,它把具有特定步骤算法中的某些 必要的处理委让给抽象方法,通过子类继承对抽 象方法的不同实现改变整个算法的行为。

二、模板方法模式的应用场景

  Template Method模式一般应用在具有以下条件 的应用中:

    - 具有统一的操作步骤或操作过程

    - 具有不同的操作细节

    - 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同

三、模板方法模式的结构

四、模板方法模式的角色和职责

  AbstractClass: 抽象类的父类

  ConcreteClass: 具体的实现子类

  templateMethod(): 模板方法

  method1()与method2(): 具体步骤方法

做车

 /*
* 组装车
*/
public abstract class MakeCar {
//组装车头
public abstract void makeHead(); //组装车身
public abstract void makeBody(); //组装车尾
public abstract void makeTail(); public void make() {
this.makeHead();
this.makeBody();
this.makeTail();
}
}

做公交车

 //做公交车
public class MakeBus extends MakeCar { public void makeBody() {
System.out.println("bus:组装车身");
} public void makeHead() {
System.out.println("bus:组装车头");
} public void makeTail() {
System.out.println("bus:组装车尾");
}
}

组装Jeep车

 //组装Jeep车
public class MakeJeep extends MakeCar { public void makeBody() {
System.out.println("jeep:组装车身");
} public void makeHead() {
System.out.println("jeep:组装车头");
} public void makeTail() {
System.out.println("jeep:组装车尾");
}
}

做卡车

 //做卡车
public class MakeKa extends MakeCar { public void makeBody() {
System.out.println("ka:组装车身");
} public void makeHead() {
System.out.println("ka:组装车头");
} public void makeTail() {
System.out.println("ka:组装车尾");
}
}

测试

 public class MainClass {
public static void main(String[] args) {
MakeCar bus = new MakeBus();
// bus.makeHead();
// bus.makeBody();
// bus.makeTail();
bus.make(); System.out.println("-------------------"); MakeCar jeep = new MakeJeep();
// jeep.makeHead();
// jeep.makeBody();
// jeep.makeTail();
jeep.make(); System.out.println("-------------------"); MakeCar ka = new MakeKa();
ka.make();
}
}

20模板方法模式TemplateMethod的更多相关文章

  1. 设计模式——模板方法模式(TemplateMethod Pattern)

    模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. UML图: 抽象模板: package com.cnblo ...

  2. 大话设计模式--模板方法模式 TemplateMethod -- C++ 实现

    1. 模板方法模式: 定义一个操作中的算法骨架,而将一些操作延迟到子类, 模板方法模式使得子类可以不改变一个算法的结构既可以重定义该算法的某些特定步骤. 当不变和可变的行为在方法的子类实现中混在一起的 ...

  3. 模板方法模式TemplateMethod

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11407071.html 1. 定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中.模板方法使得子 ...

  4. 模板方法模式-TemplateMethod

    模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的机构即可以重定义算法的某些特定步骤. 模板方法模式是通过吧不变形为搬移到超类,去除子类中的重复代码 ...

  5. B1:模板方法模式 TemplateMethod

    定义一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤 应用场景: A.操作步骤稳定,而具体细节延迟到子类. UML: 示例代码: ...

  6. 设计模式之模板方法模式 templateMethod

    代码实现 public abstract class BankTemplateMethod { //具体方法 public void takeNumber(){ System.out.println( ...

  7. C++设计模式-TemplateMethod模板方法模式

    Template模板方法模式作用:定义一个操作中的算法的骨架.而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 其关键是将通用算法(逻辑)封装在抽象基 ...

  8. java设计模式-----20、模板方法模式

    概念: Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为. 模板方法模式的应 ...

  9. java设计模式(9):模板方法模式(TemplateMethod)

    一,定义:模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 二,类图: 三,通过小例子讲解: 这个模式一般用在 ...

随机推荐

  1. 单调队列以及单调队列优化DP

    单调队列定义: 其实单调队列就是一种队列内的元素有单调性的队列,因为其单调性所以经常会被用来维护区间最值或者降低DP的维数已达到降维来减少空间及时间的目的. 单调队列的一般应用: 1.维护区间最值 2 ...

  2. redis:aof恢复与rdb服务器间迁移

    1. aof恢复与rdb服务器间迁移: 1.1. Aof恢复: 如果不小心执行了flushdb或flushall了怎么办? (1)立马执行命令:shutdown nosave 关闭服务器,为了防止其他 ...

  3. C# Socket网络编程精华篇 (转)

    http://www.cnblogs.com/weilengdeyu/archive/2013/03/08/2949101.html 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的 ...

  4. Selenium环境搭建---C#

    最近在学习Selenium,主要看的是C#版和java版,目前先搭建好了C#的环境,java的后期再搭建,这里先总结一下在vs2013里搭建环境时所遇到的坑,以便分享和后期避免. 首先就是seleni ...

  5. java 多样输入框

    1.不一样的输入框 输入框只能输入字母和下划线的正则表达式 <input type="text" onkeyup="this.value=this.value.re ...

  6. SharePoint PowerShell 修改母版页

    前言 最近在群里帮忙回答问题,碰到这么一个尴尬的问题,有人创建了一个新母版页,然后引用了新的母版页,不知道怎么的母版页有问题了,再也进不去站点了,希望修改回旧的母版页. 看到问题,想了一下,其实两种方 ...

  7. 移动应用开发技术选型:WebApp>HybridApp>NativeApp

    一:概念辨析 Web App:生存在浏览器里的应用,只能运行在浏览器里,宿主是浏览器,不是操作系统.资源一般都在网络上,就是一个触屏版的网站.如:微信公众号.不需要在设备上下载安装,只需通过浏览器即可 ...

  8. 小程序学习笔记二:页面文件详解之 .json文件

       页面配置文件—— pageName.json 每一个小程序页面可以使用.json文件来对本页面的窗口表现进行配置,页面中配置项会覆盖 app.json 的 window 中相同的配置项. 页面的 ...

  9. git变慢的原因

    最近使用git更新代码变慢,进一步试了一下提交代码.执行git命令都很慢,换了idea的工作目录.更换git版本,所有操作都是徒劳. 最后关了火绒杀毒软件,才快了起来. 坑坑坑坑坑的火绒杀毒!浪费我至 ...

  10. HDU 1022.Train Problem I【栈的应用】【8月19】

    Train Problem I Problem Description As the new term comes, the Ignatius Train Station is very busy n ...