设计模式学习笔记——模板(Template)模式
来源:互联网 发布:单倍型分析软件 编辑:程序博客网 时间:2024/05/17 01:17
设计模式学习笔记——模板(Template)模式
@(设计模式)[设计模式, 模板模式, template, 模板方法]
- 设计模式学习笔记模板Template模式
- 基本介绍
- 模板案例
- 类图
- 实现代码
- AbstractDisplay抽象类
- CharDisplay类
- StringDisplay类
- 测试类
- 运行结果
- 模板模式中的角色
- AbstractClass抽象类
- ConcreteClass具体类
- 类图
基本介绍
模板模式可以很简单的理解为,通过同一个模具倒出来的模型。形状上是一样的,但是其上的花纹,纹理等却可能完全不一样。
这里的模板模式,特指Template Method
模板方法模式。其原理为父类制定好规范——待实现的方法和模板方法。子类实现待实现的方法。调用者调用模板方法。
模板案例
类图
实现代码
AbstractDisplay抽象类
package com.pc.template.example;/** * 抽象显示类 * Created by Switch on 2017-02-03. */public abstract class AbstractDisplay { /** * 打开 */ public abstract void open(); /** * 打印 */ public abstract void print(); /** * 关闭 */ public abstract void close(); /** * 显示 */ public final void display() { // 打开 open(); // 打印5次 for (int i = 0; i < 5; i++) { print(); } // 关闭 close(); }}
CharDisplay类
package com.pc.template.example;/** * 字符显示类 * Created by Switch on 2017-02-03. */public class CharDisplay extends AbstractDisplay { // 字符 private char ch; /** * 构造方法接收字符 * * @param ch 字符 */ public CharDisplay(char ch) { this.ch = ch; } @Override public void open() { System.out.print("<<"); } @Override public void print() { System.out.print(this.ch); } @Override public void close() { System.out.println(">>"); }}
StringDisplay类
package com.pc.template.example;/** * 字符串显示类 * Created by Switch on 2017-02-03. */public class StringDisplay extends AbstractDisplay { // 字符串 private String string; // 字符串字节长度 private int width; /** * 构造方法接收字符串 * * @param string 字符串 */ public StringDisplay(String string) { this.string = string; this.width = string.getBytes().length; } @Override public void open() { printLine(); } @Override public void print() { System.out.println("|" + this.string + "|"); } @Override public void close() { printLine(); } /** * 打印一行,如下 * +------------+ */ private void printLine() { System.out.print("+"); for (int i = 0; i < this.width; i++) { System.out.print("-"); } System.out.println("+"); }}
测试类
package com.pc.template.example.test;import com.pc.template.example.AbstractDisplay;import com.pc.template.example.CharDisplay;import com.pc.template.example.StringDisplay;import org.junit.Test;/** * 显示测试类 * Created by Switch on 2017-02-04. */public class DisplayTest { @Test public void testDisplay() { AbstractDisplay display1 = new CharDisplay('s'); AbstractDisplay display2 = new StringDisplay("Switch"); AbstractDisplay display3 = new StringDisplay("交换机"); display1.display(); display2.display(); display3.display(); }}
运行结果
<<sssss>>+------+|Switch||Switch||Switch||Switch||Switch|+------++---------+|交换机||交换机||交换机||交换机||交换机|+---------+
模板模式中的角色
AbstractClass(抽象类)
AbstractClass
角色不仅负责实现模板方法,还负责声明在模板方法中所使用到的抽象方法。这些抽象方法由子类ConcreteClass
角色负责实现。在案例中,由AbstractDisplay
类扮演此角色。
ConcreteClass(具体类)
该角色负责具体实现AbstractClass
角色中定义的抽象方法。这里实现的方法将会在AbstractClass
角色的模板方法中被调用。在案例中,由CharDisplay
类和StringDisplay
类扮演此角色。
类图
GitHub:DesignPatternStudy
——————参考《图解设计模式》
0 0
- 设计模式学习笔记——模板(Template)模式
- 《Java与模式》学习笔记:设计模式——模板(Template)模式
- 设计模式学习—模板模式(Template Design Pattern)
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 设计模式学习笔记——Template Method模板方法模式
- 设计模式—模板模式(Template Pattern)
- 设计模式学习笔记--模板方法(Template Method)模式
- 设计模式 学习笔记 之 模板模式 Template Method(3)
- 设计模式学习笔记(八)—Template Method模式
- 设计模式学习笔记(二十四)——Template Method模板方法
- Java设计模式学习笔记之 —— 模板方法(Template Method)
- 【设计模式】学习笔记11:模板方法(Template Method)
- JAVA设计模式 —模板设计模式(Template Method)
- Template(模板)设计模式
- 设计模式学习-Template Method(模板方法)
- 设计模式——模板方法模式【Template Method Pattern】
- 设计模式——模板方法模式(Template Method)
- 走进设计模式之——模板模式(Template)
- Field 'New_id' doesn't have a default value
- 29. Divide Two Integers
- WebSocket jfinal 实现简单的聊天室功能
- 设计模式---空对象模式(C++实现)
- android网络访问相关整理
- 设计模式学习笔记——模板(Template)模式
- 性能指标之资源指标-CPU-配置(2)
- weblogic10安装
- 【STL】空间配置器
- 现学现卖微信小程序开发(二)
- Android将系统emoji表情转换成十进制字符串
- 函数对象
- ReactNative实战系列 组件封装之Dialog(iOS和Android通用)
- 性能指标之资源指标-CPU-配置(1)