文档章节

行为型模式之四:模版方法模式

奋斗到天明
 奋斗到天明
发布于 2015/08/27 17:40
字数 315
阅读 31
收藏 0

模版方法模式为实现特定的操作定义了工作流。他允许子类修改某些步骤,但是不能修改工作流的结构。 下面的例子展现模版方法模式如何工作。

类图

java代码

Vehicle类定义了车及其工作流程

package com.programcreek.designpatterns.templatemethod;
 
abstract public class Vehicle {
  //set to protected so that subclass can access
  protected boolean status;
 
  abstract void start();
  abstract void run();
  abstract void stop();
 
  public void testYourVehicle(){
    start();
    if(this.status){
      run();
      stop();
    }  
  }
}

Car继承了Vehicle,并定义了具体的方法

package com.programcreek.designpatterns.templatemethod;
 
public class Car extends Vehicle {
 
  @Override
  void start() {
    this.status = true;
  }
 
  @Override
  void run() {
    System.out.println("Run fast!");
 
  }
 
  @Override
  void stop() {
    System.out.println("Car stop!");
  }
}

Truck继承了Vehicle,并定义了具体的方法

package com.programcreek.designpatterns.templatemethod;
 
public class Truck extends Vehicle {
 
  @Override
  void start() {
    this.status = true;
  }
 
  @Override
  void run() {
    System.out.println("Run slowly!");
  }
 
  @Override
  void stop() {
    System.out.println("Truck stop!");
 
  }
}

testVehicle方法只接受Vehicle,他不关注是car还是truck,因为他们都一样的流程,这是一个面向接口编程。

import com.programcreek.designpatterns.templatemethod.Car;
import com.programcreek.designpatterns.templatemethod.Truck;
import com.programcreek.designpatterns.templatemethod.Vehicle;
 
public class Main {
  public static void main(String args[]){
    Car car = new Car();
    testVehicle(car);
 
    Truck truck = new Truck();
    testVehicle(truck);
  }
 
  public static void testVehicle(Vehicle v){
    v.testYourVehicle();
  }
}

模版方法模式实际使用

这个模式在Spring框架的DAO中有使用。 org.springframework.jdbc.core.JdbcTemplate 类有所有JDBC工作流中重复的代码块如update, query, execute, etc.

© 著作权归作者所有

共有 人打赏支持
奋斗到天明
粉丝 18
博文 112
码字总数 82707
作品 0
昌平
程序员
一天一种设计模式之十二-----模版方法模式

一.模版方法模式简介 模版方法模式属于行为型模式。 该模式定义一个操作中算法的框架,而将一些步骤延迟到了子类中,使得子类可以不改变算法的结构即可重新定义算法中的某些特定步骤。 模版方...

tongqu
2016/03/21
76
0
java常见的几种设计模式

设计模式 1、概述 1)设计模式(Design pattern):是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结; 2)分类: 创建型模式(创建对象的): 单例模式、抽象工厂模式、建造者...

走了丶
2017/08/27
0
0
08、模版方法模式--Template-Method

模版方法模式大纲 PS:转载请注明出处 作者: TigerChain 地址: http://www.jianshu.com/p/6c6191a47197 本文出自 TigerChain 简书 人人都会设计模式 教程简介 1、阅读对象 本篇教程适合新手阅...

TigerChain
2017/12/10
0
0
人人都会设计模式---模版方法模式--Template-Method

PS:转载请注明出处 作者: TigerChain 地址: www.jianshu.com/p/6c6191a47… 本文出自 TigerChain 简书 人人都会设计模式 教程简介 1、阅读对象 本篇教程适合新手阅读,老手直接略过 2、教程...

TigerChain
2017/12/11
0
0
Java设计模式陈列

我们并不需要自己造轮子。这么多年以来,遭遇同样问题的人们早已发现了许多很棒的解决方案,而且把它们标准化过了。我们管这些方案叫设计模式。 --《我给媳妇解释设计模式》 设计模式详细的介...

小卒搬砖
2016/11/04
46
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue+element-ui操作删除(单行和批量删除)

页面展示: <template><!-- 表格内容 --><el-table :data="packData" border style="width: 100%" ref="multipleTable" @selection-change="handleSelectionChange"><el-tab......

琴妹
11分钟前
0
0
基于vue(element ui) + ssm + shiro 的权限框架

zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目,网上有句话说,语言框架...

DarrenHu_吴邪
18分钟前
1
1
数据库水平切分(MyCat分片)

范围分片 io.mycat.route.function.AutoPartitionByLong 自动范围分片 Function名称:rang-long(配置文件默认) 枚举分片 io.mycat.route.function.PartitionByFileMap 枚举分片 Funtion名称...

这很耳东先生
19分钟前
0
0
读《HeadFirst设计模式》笔记之外观模式

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 举个栗子: 建了一个家庭影院,但是每次享受家庭影院时,你发现需要执行 将灯...

suyain
21分钟前
0
0
MongoDB分片配置

简单注解: mongos 路由进程, 应用程序接入mongos再查询到具体分片,监听端口默认27017 config server 路由表服务, 每一台都具有全部chunk的路由信息 shard为数据存储分片, 每一片都可以是...

LUIS1983
28分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部