行为型模式之模板方法模式(Template Method)
2013-04-05 23:09
351 查看
模板方法模式用于定义且约束一系列操作的工作流程,由父类定义操作模板,子类实现具体的操作步骤。
此模式适用于总体业务流程相对固定不变而流程中各环节的具体实现不尽相同的场景,在保证流程的一致性,还能定制具体的实现。
此模式将流程中不变的部分提取出来,将变化的部分推迟到子类中实现(或者不知道应该如何实现,必需由特定子类完成),父类中定义流程的方法一般为final的,以避免被子类覆盖,流程中的具体环节由子类实现,可以声明为抽象的以迫使子类实现。
场景:测试车辆的运行情况,要求:必须先启动车辆,然后在车辆处于运行状态时,可以进行测试,运行之后停止运行,若不处于运行状态时不能进行运行和停止测试,测试车辆包括轿车、卡车等车辆,测试流程都一致。
设计图:
示例代码:
此模式适用于总体业务流程相对固定不变而流程中各环节的具体实现不尽相同的场景,在保证流程的一致性,还能定制具体的实现。
此模式将流程中不变的部分提取出来,将变化的部分推迟到子类中实现(或者不知道应该如何实现,必需由特定子类完成),父类中定义流程的方法一般为final的,以避免被子类覆盖,流程中的具体环节由子类实现,可以声明为抽象的以迫使子类实现。
场景:测试车辆的运行情况,要求:必须先启动车辆,然后在车辆处于运行状态时,可以进行测试,运行之后停止运行,若不处于运行状态时不能进行运行和停止测试,测试车辆包括轿车、卡车等车辆,测试流程都一致。
设计图:
示例代码:
abstract class Vehicle { protected boolean status; public final void runTest() { start(); if (status) { run(); stop(); } } public abstract void start(); public abstract void run(); public abstract void stop(); } class Car extends Vehicle { @Override public void start() { status = true; System.out.println("Car 启动"); } @Override public void run() { System.out.println("Car 运行"); } @Override public void stop() { System.out.println("Car 停止"); } } class Truck extends Vehicle { @Override public void start() { status = true; System.out.println("Truck 启动"); } @Override public void run() { System.out.println("Truck 运行"); } @Override public void stop() { System.out.println("Truck 停止"); } } public class Tester { public static void main(String[] args) { // Vehicle vehicle = new Car(); Vehicle vehicle = new Truck(); testVehicle(vehicle); } public static void testVehicle(Vehicle vehicle) { vehicle.runTest(); } }
相关文章推荐
- 设计模式(八)the Template method 模板方法模式(类行为型)
- 设计模式 ( 十九 ) 模板方法模式Template method(类行为型)
- 行为型设计模式之模板方法(TEMPLATE METHOD)模式 ,策略(Strategy )模式
- 十四、 Template Method模板方法(行为型模式)
- 设计模式(22)-行为型-模板方法模式(Template Method)
- C#设计模式之十三模板方法模式(Template Method Pattern)【行为型】
- 设计模式——行为型之使用模板方法(Template Method Pattern)模式尽量减少重复相似的代码段(一)
- 设计模式--模板方法模式Template method(类行为型)
- 设计模式 ( 十九 ) 模板方法模式Template method(类行为型)
- JAVA设计模式(17):行为型-模板方法模式(Template Method)
- 设计模式17---设计模式之模板方法模式(Template Method)(行为型)
- JAVA设计模式(17):行为型-模板方法模式(Template Method)
- Template Method模板方法(行为型模式)
- 设计模式 ( 十九 ) 模板方法模式Template method(类行为型)
- 设计模式 ( 十九 ) 模板方法模式Template method(类行为型)
- C#面向对象设计模式纵横谈 学习笔记14 Template Method模板方法(行为型模式)
- 模板方法模式Template method(类行为型)
- 【design pattern】行为型模式之—模板方法设计模式(Template method)
- 行为型-模板方法模式(Template Method)
- 设计模式(11)——模板方法模式(Template Method Pattern,行为型)