设计模式(三)之模版方法模式(Template method Pattern)
来源:互联网 发布:windows内核实验教程 编辑:程序博客网 时间:2024/04/30 08:24
该模式就是在抽象父类中写一个具体方法,在该具体方法中列出其它抽象方法的总体调用流程,再在子类中实现这些抽象方法。下面的例子中有一个抽象父类AbstractDisplay和两个子类CharDisplay、StringDisplay。
父类中有具体方法display()和抽象方法open()、print()、close()。其中在display()方法中只是列出了对其它抽象方法的调用。
AbstractDisplay类:
package template;
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类:
package template;
public class CharDisplay extends AbstractDisplay{
private char ch;
public CharDisplay(char ch){
this.ch=ch;
}
@Override
public void close() {
System.out.println(">>");
}
@Override
public void open() {
System.out.print("<<");
}
@Override
public void print() {
System.out.print(ch);
}
}
StringDisplay类:
package 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 close() {
printLine();
}
@Override
public void open() {
printLine();
}
@Override
public void print() {
System.out.println("|"+string+"|");
}
public void printLine(){
System.out.print("+");
for(int i=0;i<width;i++){
System.out.print("-");
}
System.out.println("+");
}
}
Main类:
package template;
public class Main {
public static void main(String[] args) {
AbstractDisplay ad1=new CharDisplay('H');
AbstractDisplay ad2=new StringDisplay("Hello,World");
AbstractDisplay ad3=new StringDisplay("你好!");
ad1.display();
ad2.display();
ad3.display();
}
}
- 设计模式之-模版方法(Template Method Design Pattern)
- 设计模式(三)之模版方法模式(Template method Pattern)
- 模版方法模式(Template Method Pattern)
- [OOAD]设计模式之模版方法(Template Method)模式
- 设计模式之(Template Method)模版方法模式
- Head First 设计模式 (八) 模版方法模式(Template method pattern) C++实现
- Python实现设计模式--04.模版方法模式(Template Method Pattern)
- java设计模式-模版方法模式(Template Method)
- Template Method Pattern 模版方法模式
- 模版方法模式(Template Method Pattern)
- .NET设计模式(16):模版方法(Template Method)
- .NET设计模式-模版方法(Template Method)
- java设计模式(二):Template Method(模版方法)
- 小桐学设计模式--模版方法(TEMPLATE METHOD)
- 设计模式 - 模版方法模式 Template Method
- GOF 23 设计模式 之 模版方法模式(template method)
- 设计模式之template method模版方法模式
- 设计模式(1)- 模板方法 Template Method Pattern
- gridview中获取主键的值(GridView1_RowCommand,GridView1_PageIndexChanging,GridView1_RowDeleting.....)
- FindWindow和FindWindowEX的语法和用法
- 软件三输
- 用JFreeChart增强JSP报表的用户体验(2)
- 每天进步1%-自我管理 11月04日
- 设计模式(三)之模版方法模式(Template method Pattern)
- Flex背景图像实现类似于html平铺拉伸
- swf的数据加载
- Linux在系统引导期间查找rootfs
- SQL --事务
- [Windows Mobile]使用 AlphaMobileControls 實現透明控制項
- SQL Server 无帐号或忘记密码登陆问题
- Linux建立链接解决空间不够的问题
- 用C#实现的生命游戏