[译]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最经常被用到的设计模式.它通过阻止其他的实例化和修改来用于控制创建对象的数目.这一特性可应用于那些当只有一个 ...
随机推荐
- SCM文章4教训:定时器共阴极LED动态显示屏
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQva290ZWlfODhfbHVsdWNfNjY=/font/5a6L5L2T/fontsize/400/fil ...
- Android开发在路上:少去踩坑,多走捷径(转)
最近一朋友提了几个Android问题让我帮忙写个小分享,我觉得对新人还是挺有帮助的,所以有了这个小分享. 1. 目前, Android APP开发完成后,通常需要在哪些机型上进行测试? 2. 目前, ...
- 【SSH之旅】一步学习的步Struts1相框(三):分析控制Struts1示例
部分博客,,先后实施了Struts抽样.现在我们来分析这个样本.具体解释Struts1. Struts1的几个核心组件是值得我们注意的: (1)ActionServlet(核心控制器). (2)Act ...
- HDU 1712 ACboy needs your help(包背包)
HDU 1712 ACboy needs your help(包背包) pid=1712">http://acm.hdu.edu.cn/showproblem.php? pid=171 ...
- Python于*args 和**kwargs使用
1,*args 当量list名单 def fun_args(farg, *args): print "arg:", farg for value in args: print & ...
- Oracle 多表关联更新
drop table course; create table course ( id integer, teacherNo integer, teacherDesc ), teacherName ) ...
- 小程序大智慧,sqlserver 注释提取工具
原文:小程序大智慧,sqlserver 注释提取工具 开篇背景 我习惯在写表的创建脚本时将注释直接写在脚本里,比如 /*账套*/ CREATE TABLE [dbo].[AccountingBook] ...
- 解析http302重定向url
bool urlparse(const u_char* data,u_int len) { ip_header *ih; udp_header *uh; tcp_header *th; u_short ...
- UVA11627-Slalom(二分法)
题目链接 题意:有n个宽为w的旗门,第i个旗门左端的坐标为(xi, yi),对于全部1 <= i < n满足yi < y(i+1).你有s双滑雪板,第j双的速度为sj(垂直向下的速度 ...
- http协议报头信息和主体鉴别
http协议报头信息和主体是使用一个空行分开.这是什么空行?简单的说,那是,\r\n\r\n. 所以会server数据的回归\r\n\r\n结果分离,一个是标题信息.它是一个消息的文本. C#例如,下 ...