文档章节

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

a
 amosli
发布于 2015/12/10 00:41
字数 529
阅读 262
收藏 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
JavaScript设计模式入坑

JavaScript设计模式入坑 介绍 设计模式编写易于维护的代码。 设计模式的开创者是一位土木工程师。Σ( ° △ °|||)︴,写代码就是盖房子。 模式 模式一种可以复用的解决方案。解决软件设计中...

小小小8021
前天
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

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7防火墙firewalld操作

firewalld Linux上新用的防火墙软件,跟iptables差不多的工具。 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld是CentOS7的一大特性,最大的好处有两个:支持动态更新,不用重启服...

dingdayu
今天
1
0
关于组件化的最初步

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。 而对于工程的开发,比如以前的公司,分成了有三大块业...

DannyCoder
今天
2
0
Spring的Resttemplate发送带header的post请求

private HttpHeaders getJsonHeader() { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8"); ......

qiang123
昨天
3
0
Spring Cloud Gateway 之 Only one connection receive subscriber allowed

都说Spring Cloud Gateway好,我也来试试,可是配置了总是报下面这个错误: java.lang.IllegalStateException: Only one connection receive subscriber allowed. 困扰了我几天的问题,原来...

ThinkGem
昨天
27
0
学习设计模式——观察者模式

1. 认识观察者模式 1. 定义:定义对象之间一种一对多的依赖关系,当一个对象状态发生变化时,依赖该对象的其他对象都会得到通知并进行相应的变化。 2. 组织结构: Subject:目标对象类,会被...

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部