设计模式之——Template模板模式
Template模式又叫模板模式,是在父类中定义处理流程的框架,在子类中实现具体处理逻辑的模式。当父类的模板方法被调用时程序行为也会不同,但是,不论子类的具体实现如何,处理的流程都会按照父类中所定义的那样进行。
示例程序:
将一段字符串和字符循环显示五次的程序:
- AbstractDisplay 父类抽象的模板,里面定义了处理流程,但是没有具体把实现写出来
package site.wangxin520.gof.template; /**
* 模板模式的模板,使用的是抽象类和抽象方法。
* 在此模板中,定义一个模板的实现,以及需要子类去实现的抽象方法。
* 当子类实现抽象方法之后,便可以在本模板中固定的代码逻辑里面调用
* @author wangXgnaw
*
*/
public abstract class AbstractDisplay { /**
* 定义一些抽象方法,具体实现等子类进行
*/
protected abstract void open();
protected abstract void print();
protected abstract void close(); /**
* 定义模板执行的代码逻辑
* 将字符串和字符循环显示5次
*/
public final void display(){
open();
for (int i = 0; i < 5; i++) {
print();
}
close();
}
}
- CharDisplay 子类实现了父类模板的抽象方法,处理字符
package site.wangxin520.gof.template; /**
* 字符显示操作的子类,继承模板
* @author wangXgnaw
*
*/
public class CharDisplay extends AbstractDisplay{ private Character ch;
/**
* 构造函数
* @param ch 传入字符参数
*/
public CharDisplay(Character ch) {
this.ch=ch;
} /*
* 后面就是重写父类模板定义的抽象方法
* @see site.wangxin520.gof.template.AbstractDisplay#open()
*/
@Override
protected void open() {
System.out.print("(");
} @Override
protected void print() {
System.out.print(ch);
} @Override
protected void close() {
System.out.println(")");
} }
- StringDisplay 子类实现了父类的模板抽象方法,处理字符串
package site.wangxin520.gof.template; /**
* 字符串显示操作的模板子类,继承自模板
* @author wangXgnaw
*
*/
public class StringDisplay extends AbstractDisplay{ private String string; /**
* 构造函数,传入一个字符串
* @param string
*/
public StringDisplay(String string) {
this.string=string;
} /**
* 后面就是重写父类的抽象方法
*/
@Override
protected void open() {
System.out.println("+------------------------+");
} @Override
protected void print() {
System.out.println(string);
} @Override
protected void close() {
System.out.println("+------------------------+");
} }
- TemplateTest 模板模式的测试类
package site.wangxin520.gof.template; /**
* 模板模式的测试类
* @author wangXgnaw
*
*/
public class TemplateTest {
public static void main(String[] args) {
AbstractDisplay ad1=new CharDisplay('w');
ad1.display();
AbstractDisplay ad2=new StringDisplay("wangxin");
ad2.display();
}
}
- 控制台显示:

设计模式之——Template模板模式的更多相关文章
- Template(模板)模式
第三章:模板模式 Template模式比较简单,是基于继承关系的一种设计模式,由父类定义处理流程框架,由子类中实现具体处理. Code: package example.template; /*** ...
- Java设计模式之《模板模式》及使用场景
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9558825.html 模板模式,顾名思义,就是通过模板拓印的方式. 定义模板,就是定义框 ...
- 《JAVA设计模式》之模板模式(Template)
在阎宏博士的<JAVA与模式>一书中开头是这样描述模板方法(Template Method)模式的: 模板方法模式是类的行为模式.准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式 ...
- Head First 设计模式系列之一----模板模式(java版)
开篇序言:四人帮的设计模式对于我这个菜鸟看着打瞌睡,后面果断买了一本head first的,感觉还可以像看报纸似的,花了一个寒假的晚上看了大半,确实内容也挺吸引人的,讲的很风趣.否则我也不可能,大过年 ...
- 再起航,我的学习笔记之JavaScript设计模式30(简单模板模式)
简单模板模式 概念介绍 简单模板模式(Simple template): 通过格式化字符串拼凑出视图避免创建视图时大量节点操作,优化内存开销. 创建模板 在实际的业务中如果我们需要进行前后台交互,或多 ...
- 设计模式のTemplatePattern(模板模式)----行为模式
一.产生背景 在程序设计中,可能每个对象都有共同的地方,而此时如果每个对象定义一次,如下例子,每个对象都写Stay()方法,这样在每个类中都有很多相同的代码,此时,我们需要用到模板设计模式,来解决这个 ...
- 三、Template 模板模式
需求:有规格的尺子,不管何种笔写,写出的字大小.形状都是一样的?抽象为处理流程一致,仅仅是不同的实现 代码清单: 抽象类: public abstract class AbstractDisplay{ ...
- 一天一个设计模式——模板方法(Template Method)模式
一.模式说明 现实世界中的模板是用于将事物的结构规律予以固定化.标准化的成果,它体现了结构形式的标准化.例如镂空文字印刷的模板,通过某个模板印刷出来的文字字体大小都是一模一样,但是具体使用什么材质的颜 ...
- 设计模式之Template Method模式
作用:将具体的处理交给子类 什么是Template Method模式? Template Method模式是指带有模板功能的模式,组成模板的方法被定义在父类中,且这些方法为抽象方法.子类去实现父类中的 ...
随机推荐
- 李洪强iOS经典面试题35-按层遍历二叉树的节点
李洪强iOS经典面试题35-按层遍历二叉树的节点 问题 给你一棵二叉树,请按层输出其的节点值,即:按从上到下,从左到右的顺序. 例如,如果给你如下一棵二叉树: 3 / \ 9 20 ...
- 【MySql】Java 批量插入数据库addBatch
//addBatch批量插入数据库 public static void insertCommentToMySql(Set<String> commentList) { Iterator& ...
- 基于Redis实现延时队列服务
背景 在业务发展过程中,会出现一些需要延时处理的场景,比如: a.订单下单之后超过30分钟用户未支付,需要取消订单 b.订单一些评论,如果48h用户未对商家评论,系统会自动产生一条默认评论 c.点我达 ...
- C基础之移位操作
因为左移操作不会导致符号位出现缺位,所以不考虑符号位,低位补0即可:右移操作会涉及到符号位出现缺位的问题,所以在有符号数的右移操作时要考虑符号位怎么补的问题. 左移操作(<<)对于无符号数 ...
- Andriod——setContentView( )方法
setContentView( )方法 setContentView(R.layout.main)在Android里面,这句话是什么意思? R.layout.main是个布局文件即控件都是如何摆放如何 ...
- Hive及HBase数据迁移
一. Hive数据迁移 场景:两个Hadoop平台集群之间Hive表迁移. 基本思路:Hive表元数据和文件数据export到HDFS文件,通过Distcp将HDFS迁移到另一个集群的HDFS文件,再 ...
- 关于HTTP的长连接和短连接
1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议. IP协议主要解决网络路由和寻址 ...
- Gogs http和ssh地址显示localhost的问题
问题描述: 如下图所示HTTP和SSH地址显示的是localhost而不是对应的域名或地址. 解决方案: 按以下方法修改Gogs配置文件并重启服务器 域名问题 RUN_USER = git DOMAI ...
- 数据库 proc编程七
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- SSM,即Spring+SpringMVC+MyBatis三个开源框架的整合框架集。
SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻 ...