一、什么是模板方法模式

  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. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第4章编程练习6

    #include <iostream>using namespace std;struct CandyBar{ char kind[20]; float weight; int calor ...

  2. 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第4章编程练习1

    #include <iostream>//#include <string>using namespace std;struct stu{ char fname[10];//这 ...

  3. yii创建控制台命令

    创建控制台命令程序1.控制台命令继承自 yii\console\Controller控制器类2.在控制器类中,定义一个或多个动作,动作与控制台子命令相对应3.在动作方法中实现业务需求的代码 运行控制台 ...

  4. Yii2 RbacController示例

    RbacController 示例: <?php namespace console\controllers; use Yii; use yii\console\Controller; clas ...

  5. selenium+PhantomJS小案例—爬豆瓣网所有电影代码python

    #coding=utf-8from selenium import webdriver def crawMovie(): driver=webdriver.PhantomJS() driver.get ...

  6. c# 后台绑定treeview 多个tab

    <wijmo:C1Tabs ID="C1Tab1" runat="server" ><%--OnSelectedChanged="& ...

  7. Node_初步了解(1)

    (1)在cmd或是git上面运行node.js文件,ctrl+c可以停掉之前的服务. (2)node.js本质是一个JavaScript运行环境. (3)node.js与浏览器控制台js执行环境的不同 ...

  8. 微信小程序中的单位

    vw:viewpoint width,视窗宽度,1vw等于视窗宽度的1%. vh:viewpoint height,视窗高度,1vh等于视窗高度的1%. rpx:rpx单位是微信小程序中css的尺寸单 ...

  9. Hibernate非主键关联

    一. 非主键关联,我们进行外键关联时,通常使用的是主键,但有时候需要使用到其他列时可以通过以下方法设置: 注解中:@JoinColumn(name="city", referenc ...

  10. APP中的图片如何长按可以下载并保存图片到相册出错处理

    https://www.cnblogs.com/interdrp/p/9302164.html 接上文. 如果用户在保存图片过程中,不小心拒绝了相册的访问权限