目的:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
元素:
AbstractClass(抽象类):实现主要算法的结构,具体的步骤可以声明为抽象方法由子类实现。
ConcreteClass(具体类):实现抽象类的方法,定义具体的方法细节。
类图:
代码示例:
AbstractDisplay.java
public abstract class AbstractDisplay {
public abstract void preprint();
public abstract void print();
public abstract void postprint();
public final void display()
{
preprint();
print();
postprint();
}
}
StringDisplay.java
public class StringDisplay extends AbstractDisplay{
private String str;
public StringDisplay(String str)
{
this.str = str;
}
@Override
public void postprint() {
// TODO Auto-generated method stub
System.out.println("+++++++++++++");
}
@Override
public void preprint() {
// TODO Auto-generated method stub
System.out.println("+++++++++++++");
}
@Override
public void print() {
// TODO Auto-generated method stub
System.out.println("+"+str+"+");
}
}
Main.java
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AbstractDisplay a = new StringDisplay("hello,world");
a.display();
}
}
|