您的位置:首页 > 其它

设计模式(三)之模版方法模式(Template method Pattern)

2009-11-04 17:24 537 查看
该模式就是在抽象父类中写一个具体方法,在该具体方法中列出其它抽象方法的总体调用流程,再在子类中实现这些抽象方法。下面的例子中有一个抽象父类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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐