Template(模板)模式
2024-09-01 06:50:36
第三章:模板模式
Template模式比较简单,是基于继承关系的一种设计模式,由父类定义处理流程框架,由子类中实现具体处理。
Code:
package example.template; /***
* 抽象类AbstractDisplay 其中抽象方法交给子类去实现
* @author Administrator
*
*/
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();
}
}
package example.template; public class CharDisplay extends AbstractDisplay{ private char ch; public CharDisplay(char ch) {
this.ch = ch;
} @Override
public void open() {
System.out.print("<<"); } @Override
public void print() {
System.out.print(ch);
} @Override
public void close() {
System.out.print(">>");
} }
package example.template; public class StringDisplay extends AbstractDisplay{ private String string; private int width; public StringDisplay(String string) {
this.string = string;
this.width = string.getBytes().length;
} @Override
public void open() {
printLength();
} private void printLength() {
System.out.print("+");
for(int i = 0; i < width; i++) {
System.out.print("-");
}
System.out.println("+");
} @Override
public void print() {
System.out.println("|"+string+"|");
} @Override
public void close() {
printLength();
} }
package example.template; public class Main { public static void main(String[] args) {
//在父类中定义处理流程,在子类中具体实现,就是Template(模板)模式
AbstractDisplay abstractDisplay = new CharDisplay('H');
AbstractDisplay abstractDisplay2 = new StringDisplay("HelloWworld");
abstractDisplay2.display();
abstractDisplay.display();
}
}
不用去关系打印的内容,在类AbstractDisplay中定义了三个抽象方法和一个final方法,在使用时可以使用多态,执行display();方法,在display();方法中定义了过程实现,在子类中完成具体处理。
这样写的好处是,在父类中编写了流程算法,就无需再子类中重复去写。
最新文章
- 备忘录模式(Memento Pattern)
- js校验输入字符串的字节长度
- CCNA第二章TCP/IP简介考试要点学习笔记
- [原创]cocos2dx加载网络图片&;异步加载图片
- 几种不同的获取url地址的方法
- Android中的IOC框架,完全注解方式就可以进行UI绑定和事件绑定
- Java知识点总结(不定时更新)
- 淘宝(阿里百川)手机客户端开发日记第九篇 Looper详解
- mariadb介绍
- ant 安装过程中问题记录
- SuperMapDeskTop中去除面图层边框
- hdoj 3746 Cyclic Nacklace【KMP求在结尾加上多少个字符可以使字符串至少有两次循环】
- Vijos P1680距离
- MAC地址格式小结
- iOS传值之通知传值(三)
- ecshop的详细安装步骤
- MySQL yum 在线与本地包方式安装
- 07-java学习-方法重载-idea集成开发工具学习-项目-模块-包
- 通过domoticz restful接口更新数据 c# 控制台程序
- oracle ITL(事务槽)的理解