首页 > IT职业 > IT生活 > 设计模式之模板方法模式
模板方法模式利用了Java的继承机制。先上UML图:
模板方法模式UML
public abstract class Template {
public abstract void methodOne();
public abstract void methodTwo();
// 模板方法
public void commonMethod() {
this.methodOne();
this.methodTwo();
}
} 具体类 public class ConcreteA extends Template {
@Override
public void methodOne() {
System.out.println("AOne");
}
@Override
public void methodTwo() {
System.out.println("ATwo");
}
}
public class ConcreteB extends Template {
@Override
public void methodOne() {
System.out.println("BOne");
}
@Override
public void methodTwo() {
System.out.println("BTwo");
}
} 客户端类 public class Client {
public static void main(String[] args) {
Template templateA = new ConcreteA();
templateA.commonMethod(); // AOne nr ATwo
Template templateB = new ConcreteB();
templateB.commonMethod(); // BOne nr BTwo
}
} 模板方法扩展 可以在抽象父类的模板方法commonMethod内,根据普通方法的返回结果做流程控制,比如:
public abstract class Template {
public abstract void methodOne();
public abstract void methodTwo();
public abstract boolean doMethodOne();
// 模板方法
public void commonMethod() {
if (this.doMethodOne()) {
this.methodOne();
}
this.methodTwo();
}
} 使用Java8的接口默认方法 Java8以后,接口新增了默认方法,也可用于实现模板方法模式。不一定要用抽象类。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/3306/viewspace-2808524/ ,如需转载,请注明出处,否则将追究法律责任。