[環境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com) http://www.aygfsteel.com/wintys/
[正文]:

package pattern.template;
/**
* 模板方法模式:Template Method Pattern
* @version 2009-6-15
* @author Winty(wintys@gmail.com)
*/
public class TemplateMethodTest{
public static void main(String[] args){
AbstractClass ac = new ConcreteClass();
ac.theTemplateMethod();
}
}
/**
* 抽象模板角色,在此定義模板方法
*/
abstract class AbstractClass{
public void theTemplateMethod(){
operation1();
operation2();
operation3();
doHookOperation();
}
protected abstract void operation1();
protected abstract void operation2();
public final void operation3(){
System.out.println("operation3");
}
public void doHookOperation(){
//空方法
}
}
/**
* 具體模板角色
*/
class ConcreteClass extends AbstractClass{
protected void operation1(){
System.out.println("operation1");
}
protected void operation2(){
System.out.println("operation2");
}
}
/**
* 模板方法模式:Template Method Pattern
* @version 2009-6-15
* @author Winty(wintys@gmail.com)
*/
public class TemplateMethodTest{
public static void main(String[] args){
AbstractClass ac = new ConcreteClass();
ac.theTemplateMethod();
}
}
/**
* 抽象模板角色,在此定義模板方法
*/
abstract class AbstractClass{
public void theTemplateMethod(){
operation1();
operation2();
operation3();
doHookOperation();
}
protected abstract void operation1();
protected abstract void operation2();
public final void operation3(){
System.out.println("operation3");
}
public void doHookOperation(){
//空方法
}
}
/**
* 具體模板角色
*/
class ConcreteClass extends AbstractClass{
protected void operation1(){
System.out.println("operation1");
}
protected void operation2(){
System.out.println("operation2");
}
}