文档章节

设计模式----模板方法模式UML和实现代码

a
 amosli
发布于 2015/12/10 00:41
字数 529
阅读 247
收藏 0

一、什么是模板方法模式?

模板方法模式(Template Method) 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。

类型形为型模式 

顺口溜:中访策备迭 观命状职解

二、模板模式UML

三、JAVA代码实现

package com.amosli.dp.behavior.template;

public abstract class AbstractClass {
	public  void templateMethod(){
		primitiveMethod1();
		primitiveMethod2();
	}
	public abstract void  primitiveMethod1();
	public abstract void  primitiveMethod2();

}

package com.amosli.dp.behavior.template;

public class ConcreteClassA extends AbstractClass{

	@Override
	public void primitiveMethod1() {
		System.out.println("ConcreteClassA primitive method 1...");
	}

	@Override
	public void primitiveMethod2() {
		System.out.println("ConcreteClassA primitive method 2...");
	}

}

package com.amosli.dp.behavior.template;

public class ConcreteClassB extends AbstractClass{

	@Override
	public void primitiveMethod1() {
		System.out.println("ConcreteClassB primitive method 1...");
	}

	@Override
	public void primitiveMethod2() {
		System.out.println("ConcreteClassB primitive method 2...");
	}

}


package com.amosli.dp.behavior.template;

public class Client {
	public static void main(String[] args) {
		AbstractClass abstractClass = new ConcreteClassA();
		abstractClass.templateMethod();

		abstractClass = new ConcreteClassB();
		abstractClass.templateMethod();
	}
}

四、使用场景

当不变和可变的行为在方法的子类中混合在一起时,不变的行为就会在子类中重复出现。我们可以通过模板方法模式将这些行为搬移到单一的地方,这样就帮助子类摆脱重复的不变行为的纠结。

五、优缺点

1、优点

模板方法所不变的行为搬到超类,去除子类中的重复代码,提供了一个很好了代码复用平台;


2、缺点

将不变行为集成到超类中,当类的行为比较复杂时,对于超类的管理和扩展将会越来越复杂,所以使用模板方法模式时,切记对于不对的类分配不同的职责(SRP)。


六、源码地址

本系列文章源码地址,https://github.com/amosli/dp  欢迎Fork  & Star !!



© 著作权归作者所有

共有 人打赏支持
a
粉丝 5
博文 25
码字总数 18138
作品 0
黄浦
我的Java设计模式-代理模式

写完上一篇之后有小伙伴问我有没有写过代理模式,想看看我的理解。原本我的设计模式系列是按照创建型-行为型-结构型的顺序写下去的,既然小伙伴诚心诚意了,我就大发慈悲的穿插一篇代理模式。...

Jet啟思
2017/11/29
0
0
Template Method 模板设计模式

什么是模板设计模式 对于不了解的模板设计模式的来说,可以认为如同古代的造纸术一样,纸所以成型,取决于用了模板的形状,形状又由镂空的木板组成,而你想要造什么纸,又取决于你使用什么材料. 上...

---dgw博客
04/28
0
0
隔段时间学习一个学习设计模式——策略模式

哎呀,终于快要上班了。上班前的休息一个星期。工作两年多了,开始关心代码质量。 以我目前的理解,代码质量,一实现功能需求,二代码可读性(即可维护性),三代码的扩展性(设计模式)。 ...

井然有序
06/26
0
0
设计模式 2014-12-19

book: 阎宏《JAVA与模式》 架构设计栏目 http://blog.csdn.net/enterprise/column.html 概要: http://bbs.csdn.net/forums/Embeddeddriver 23种设计模式分别是: 1.单例模式 2.工厂方法模式...

jayronwang
2014/12/19
0
0
设计模式4——State设计模式

State状态设计模式类似于Switch多路分支功能的开关,State状态模式机制如下: 状态模式UML图如下: State状态设计模式用于改变对象的行为,在代理的生命周期里,随着状态变化从一个目标实现程...

小米米儿小
2013/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

php 使用redis锁限制并发访问类

1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领...

豆花饭烧土豆
6分钟前
0
0
Linux环境搭建 | 手把手教你配置Linux虚拟机

在上一节 「手把你教你安装Linux虚拟机」 里,我们已经安装好了Linux虚拟机,在这一节里,我们将配置安装好的Linux虚拟机,使其达到可以开发的程度。 Ubuntu刚安装完毕之后,还无法进行开发,...

良许Linux
8分钟前
0
0
Nginix开启SSL支持HTTPS访问(自签名方法)

Nginix开启SSL支持HTTPS访问(自签名方法) 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器...

openthings
24分钟前
0
0
(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部