[译]Java 设计模式 之模板方法
(文章翻译自Java Design Pattern: Template Method)
模板方法设计模式定义了归档特定操作的工作流。它允许子类去修改特定的步奏而不用改变工作流的结构。
下面的例子表示模板方法模式是怎么工作的。
类图

Java 代码
Vehicle:java定义了一个小型车并且使其可以运作。
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等等。
[译]Java 设计模式 之模板方法的更多相关文章
- 折腾Java设计模式之模板方法模式
博客原文地址:折腾Java设计模式之模板方法模式 模板方法模式 Define the skeleton of an algorithm in an operation, deferring some ...
- java 设计模式之模板方法
模板方法的定义 定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现. 模板方法使得子类在不改变算法结构的情况下,重新定义某些算法的步骤. 一次性实现一个算法不变的部分,把可变的行为留给子类实现. ...
- Java设计模式应用——模板方法模式
所谓模板方法模式,就是在一组方法结构一致,只有部分逻辑不一样时,使用抽象类制作一个逻辑模板,具体是实现类仅仅实现特殊逻辑就行了.类似科举制度八股文,文章结构相同,仅仅具体语句有差异,我们只需要按照八股 ...
- Java设计模式之模板方法设计模式(银行计息案例)
不知道为什么,这几天对Java中的设计模式非常感兴趣,恰巧呢这几天公司的开发任务还不算太多,趁着有时间昨天又把模板方法模式深入学习了一下,做了一个客户在不同银行计息的小案例,感触颇深,今天给各位分享一 ...
- java设计模式之模板方法
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744002 今天你还是像往常一样来上班,一如既往地开始了你的编程工作. 项目经理告 ...
- Java设计模式之 — 模板方法(Template Method)
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744002 今天你还是像往常一样来上班,一如既往地开始了你的编程工作. 项目经理告 ...
- Java设计模式之模板方法模式(Template)
前言: 我们在开发中有很多固定的流程,这些流程有很多步凑是固定的,比如JDBC中获取连接,关闭连接这些流程是固定不变的,变动的只有设置参数,解析结果集这些是根据不同的实体对象“来做调整”,针对这种拥有 ...
- java设计模式之模板方法模式
模板方法模式 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.通俗的说的就是有很多相同的步骤的,在某一些地方可能有一些差 ...
- [译]Java 设计模式之单例
(文章翻译自Java Design Pattern: Singleton) 单例是在Java最经常被用到的设计模式.它通过阻止其他的实例化和修改来用于控制创建对象的数目.这一特性可应用于那些当只有一个 ...
随机推荐
- spring+websocket综合(springMVC+spring+MyBatis这是SSM框架和websocket集成技术)
java-websocket该建筑是easy.儿童无用的框架可以在这里下载主线和个人教学好java-websocket计划: Apach Tomcat 8.0.3+MyEclipse+maven+JD ...
- VC和gcc在保证功能static对线程安全的差异变量
VC和gcc不同,不能保证静态变量的线程安全性.这就给我们的程序带来了非常大的安全隐患和诸多不便.这一点应该引起我们的重视!尤其是在构造函数耗时比較长的时候.非常可能给程序带来意想不到的结果.本文从測 ...
- BZOJ 2115 Wc2011 Xor DFS+高斯消元
标题效果:鉴于无向图.右侧的每个边缘,求一个1至n路径,右上路径值XOR和最大 首先,一个XOR并能为一个路径1至n简单的路径和一些简单的XOR和环 我们开始DFS获得随机的1至n简单的路径和绘图环所 ...
- 减小Cookie体积
HTTP coockie能够用于权限验证和个性化身份等多种用途.coockie内的有关信息是通过HTTP文件头来在webserver和浏览器之间进行交流的.因此保持coockie尽可能的小以降低用户的 ...
- 彩色图像--色彩空间 HSI(HSL)、HSV(HSB)
得知DIP文章66日 转载请注明文章出处:http://blog.csdn.net/tonyshengtan ,出于尊重文章作者的劳动,转载请标明出处!文章代码已托管.欢迎共同开发:https://g ...
- JQuery插件开发初探——结构熟悉
工作之余,对Jquery插件做了一点尝试,想着之前总用别人写的插件,自己要是也写一个用岂不是很cool.于是说干就干,动手开始写. 首先是模仿,从一个简单的功能进行入手,了解一下插件开发的流程和结构. ...
- Android KK台,联系人列表#集团放置A~Z之前
更改文件ContactLocaleUtils.java两 (Path:packages/contactsprovider/src/com/android/providers/contacts) 1. ...
- 采购申请 POCIRM-001:ORA-01403: 无论数据未找到
今天就让同事帮忙看问题.当请求生成采购订单,在销售模块错误提交销售订单 查看请求日志 +-------------------------------------------------------- ...
- 通过HttpClient来调用Web Api接口,实体参数的传递
下面定义一个复杂类型对象 public class User_Info { public int Id { get; set; } public string Name { get; set; } p ...
- android 之 下载管理器 无论监测在当地的设计思路
我相信你.让应用市场.或其它下载,想不管是什么地方监测进展情况.而且很好的实现. 这里分享一个相对简单的,并防止内存溢出等..我们用一个引用弱结合View进展更新方法. Map<String, ...