文档章节

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

奋斗到天明
 奋斗到天明
发布于 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

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 小心着凉 @红薯

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:5.33起,其声呜呜然,如怨如慕,如泣如诉。余音袅袅,不绝如缕。分享Arch Enemy的单曲《Bridge Of Destiny (2009)》 《Bridge Of...

小小编辑
今天
190
4
what f,,

anlve
今天
9
0
初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
15
0
现场看路演了!

HiBlock
昨天
23
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部