模版方法模式用来稳定对象的行为,可以由具体实现去完成细节。模版方法模式是一种行为模式。
模版方法模式类图:
[img]http://dl.iteye.com/upload/attachment/364928/409dfc3b-c793-31f1-91f1-e26d13075e70.jpg[/img]
具体代码示例:
模版类:
具体实现
具体实现2
测试类:
说明: 模板方法模式针对的范围是系列对象,都有着稳定的类似行为,只是行为上有所区别。模板方法模式就是为了提高复用。
模版方法模式类图:
[img]http://dl.iteye.com/upload/attachment/364928/409dfc3b-c793-31f1-91f1-e26d13075e70.jpg[/img]
具体代码示例:
模版类:
package templatePattern;
public abstract class Template {
void templateMethod(){
doAstep();
doBstep();
}
public abstract void doAstep();
public abstract void doBstep();
}
具体实现
package templatePattern;
public class ConcreteMethodA extends Template{
@Override
public void doAstep() {
System.out.println("坐公交去火车站");
}
@Override
public void doBstep() {
// TODO Auto-generated method stub
System.out.println("坐高铁去上海");
}
}
具体实现2
package templatePattern;
public class ConcreteMethodB extends Template{
@Override
public void doAstep() {
System.out.println("坐taxi去汽车站");
}
@Override
public void doBstep() {
// TODO Auto-generated method stub
System.out.println("坐大巴去上海");
}
}
测试类:
package templatePattern;
public class TemplateTest {
public static void main(String[]args){
Template templateA = new ConcreteMethodA();
Template templateB = new ConcreteMethodB();
System.out.println("the way to go to shanghai");
templateA.templateMethod();
System.out.println("the other method to go to shanghai");
templateB.templateMethod();
}
}
说明: 模板方法模式针对的范围是系列对象,都有着稳定的类似行为,只是行为上有所区别。模板方法模式就是为了提高复用。