文档章节

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

a
 amosli
发布于 2015/12/10 00:41
字数 529
阅读 282
收藏 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
设计模式 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
Template Method 模板设计模式

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

---dgw博客
2018/04/28
0
0
设计模式15——Template Method设计模式

Template Method模板方法设计模式定义一个操作中算法的骨架,将具体步骤的执行延迟到子类中实现。Java中的抽象类就是使用了模板方法设计模式。模板方法设计模式结构如下: 以文档处理为例,T...

小米米儿小
2014/01/24
0
0
【设计模式笔记】(十六)- 代理模式

一、简述 代理模式(Proxy Pattern),为其他对象提供一个代理,并由代理对象控制原有对象的引用;也称为委托模式。 其实代理模式无论是在日常开发还是设计模式中,基本随处可见,中介者模式中...

MrTrying
2018/06/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
2
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
4
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxCool
今天
3
0
携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
今天
3
0
远程获得的有趣的linux命令

使用这些工具从远程了解天气、阅读资料等。 我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你有一直在看,如果没有,请回到开始,从头看过来。你会发现 Linux 终端有很多游戏、消遣和...

Linux就该这么学
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部