设计模式之Template Method模式
作用:将具体的处理交给子类
什么是Template Method模式?
Template Method模式是指带有模板功能的模式,组成模板的方法被定义在父类中,且这些方法为抽象方法。子类去实现父类中的抽象方法,即在子类种再进行对应的方法实现。
所以在父类中定义所需的框架,子类中去实现对应的方法,这就是Template Method模式。
UML类图:
总体框架:display种首先open方法,再调用5次print方法,再调用close方法(open、print、close均为抽象方法)
AbstractDisplay类:
- public abstract class AbstractDisplay
- {
- public abstract void open();
- public abstract void print();
- public abstract void close();
- public final void display()
- {
- open();
- for(int i=0;i<5;++i)
- print();
- close();
- }
- }
CharDisplay类:
- public class CharDisplay extends AbstractDisplay
- {
- private char ch;
- public CharDisplay(char ch)
- {
- this.ch = ch;
- }
- public void open()
- {
- System.out.print("<<");
- }
- public void print()
- {
- System.out.print(ch);
- }
- public void close()
- {
- System.out.print(">>");
- }
- }
StringDisplay类:
- public class StringDisplay extends AbstractDisplay
- {
- private String string;
- privateint width;
- public StringDisplay(String string)
- {
- this.string = string;
- this.width = string.getBytes().length;
- }
- public void open()
- {
- printLine();
- }
- public void print()
- {
- System.out.print("|"+string+"|");
- }
- public void close()
- {
- printLine();
- }
- private void printLine()
- {
- System.out.print("+");
- for(int i=0;i<width;++i)
- System.out.print("-");
- System.out.println("+");
- }
- }
Main类:
- public class Main(String[] argvs)
- {
- AbstractDisplay d1 = new CharDisplay('H');
- AbstractDisplay d2 = new StringDisplay("Hello World");
- d1.display();
- d2.display();
- }
作用:基类提供了实现的大体流程,但是每一步细节仍需要子类自行去实现
设计模式之Template Method模式的更多相关文章
- 一天一个设计模式——模板方法(Template Method)模式
一.模式说明 现实世界中的模板是用于将事物的结构规律予以固定化.标准化的成果,它体现了结构形式的标准化.例如镂空文字印刷的模板,通过某个模板印刷出来的文字字体大小都是一模一样,但是具体使用什么材质的颜 ...
- 【设计模式】Template Method模式
OO基金会 封装 多态 继承 OO原则 封装变化 多用组合,少用继承 针对接口编程.不针对实现编程 为交互对象的松耦合设计而努力 类应该对扩展开放,对改动关闭 依赖抽象,不要依赖详细类 仅仅和朋友交谈 ...
- 设计模式:template method模式
思想:在父类中定义处理流程的框架,在子类中实现具体的处理方法 优点:在父类中定义处理的算法,无需在每个子类中重复编写 继承关系图: 例子: //接口定义 class Parent { public: ...
- Template Method模式和Strategy模式有何异同
Template Method模式和Strategy模式有何异同 博客分类: 设计模式 Java Template Method模式很容易理解,就是由基类提供一个模板,将各子类中不变的行为提取到基类 ...
- 设计模式 Template Method模式 显示程序猿的一天
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/26276093 不断设计模式~ Template Method模式 老套路,看高清 ...
- 设计模式Template Method模式(Template Method)摘录
23种子GOF设计模式一般分为三类:创建模式.结构模型.行为模式. 创建模式抽象的实例.怎样创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化托付给还 ...
- 行为型设计模式之模板方法(TEMPLATE METHOD)模式 ,策略(Strategy )模式
1 模板方法(TEMPLATE METHOD)模式: 模板方法模式把我们不知道具体实现的步聚封装成抽象方法,提供一些按正确顺序调用它们的具体方法(这些具体方法统称为模板方法),这样构成一个抽象基类.子 ...
- 设计模式(三)Template Method模式
在父类中定义处理流程的框架,在子类中实现具体处理的模式就称为Template Method模式即模板方法模式. 根据下面的示例程序理解模板方法模式. package BigJunOba.bjtu.Te ...
- Template Method模式和Strategy模式[继承与委托]
继承 program by difference. 通过继承,可以建立完整的软件结构分层.其中每一层都可以重用该层次以上的Code. 过度使用继承的代价是巨大的.应使用组合或者委托来替代继承. Tem ...
随机推荐
- 【Python3爬虫】12306爬虫
此次要实现的目标是登录12306网站和查看火车票信息. 具体步骤 一.登录 登录功能是通过使用selenium实现的,用到了超级鹰来识别验证码.没有超级鹰账号的先注册一个账号,充值一点题分,然后把下载 ...
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装
2019/1/31更新,经过我一段时间的使用 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用d ...
- RSA签名的PSS模式
本文由云+社区发表 作者:mariolu 一.什么是PSS模式? 1.1.两种签名方式之一RSA-PSS PSS (Probabilistic Signature Scheme)私钥签名流程的一种填充 ...
- [五]类加载机制双亲委派机制 底层代码实现原理 源码分析 java类加载双亲委派机制是如何实现的
Launcher启动类 本文是双亲委派机制的源码分析部分,类加载机制中的双亲委派模型对于jvm的稳定运行是非常重要的 不过源码其实比较简单,接下来简单介绍一下 我们先从启动类说起 有一个Lau ...
- MySql 注意点
每条操作语句的结束都要加:(遇到:就会执行操作) DELIMITER 其实本身相当 :当存储过程中包含:的时候,就需要用 DELIMITER 来区分 我们会经常看到 DELIMITER $$ 或者DE ...
- wpf 无缝滚动
很早以前有项目就需要文字无缝滚动的效果但无奈当时技术不到位 人也比较懒惰(大概程序猿都是这个样子吧) 此方法并非只文字无缝其实任何内容都可以 <ScrollViewer Name="s ...
- Oracle 11g设置IP访问限制
出于数据安全考虑,对Oracle数据库的IP做一些限制,只有固定的IP才能访问. 修改$ORACLE_HOME/network/ADMIN/sqlnet.ora文件 增加以下内容(红色表示注释): # ...
- vue HTTP 请求(vue-resource)
来自:https://www.cnblogs.com/lhl66/p/8022423.html 侵删 //初始化页面需要做什么事情 //点击后需要做什么事情 //鼠标.键盘.冒泡.默认行为等事件 // ...
- IBGP默认的TTL值为255
结论: 1.IBGP默认的TTL值为255 组网图: 抓包内容: 1.在AR1和AR2之间抓包,只显示BGP包,显示内容如下:
- (办公)SpringBoot与mybatisGenerator自动生成.
20181206-自动生成,少写一点代码. (以下的内容主要参考csdn上的<[完美]SpringBoot+Mybatis-Generator自动生成>这篇文章,还有简书上的mbatis- ...