设计模式-模板方法模式
1.概述
模板方法模式是在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
2.类图
3.角色
- AbstractClass:含有模板方法的类
- ConcreteClassA,ConcreteClassB:具体的实现类。
4.实现
1.AbstractClass
public abstract class AbstractClass {
//这个方法就是模板方法,定义为final放置子类重写。
final void templateMethod(){
Operation1();
concreteOperation();
if(hook()){
Operation2();
}
}
abstract void Operation1();//子类要重写的方法
abstract void Operation2();//子类要重写的方法
void concreteOperation(){
System.out.println("TemplateMethod");
}
public Boolean hook(){
return true;
}
}
2.ConcreteClassA
public class ConcreteClassA extends AbstractClass{
void Operation1() {
System.out.println(this.toString()+"Opreation1");
}
void Operation2() {
System.out.println(this.toString()+"Opreation2");
}
}
3.ConcreteClassB
public class ConcreteClassB extends AbstractClass{
void Operation1() {
System.out.println(this.toString()+"Operation1");
}
void Operation2() {
System.out.println(this.toString()+"Operation2");
}
@Override
public Boolean hook() {
return false;
}
}
Main方法:
public class Main {
public static void main(String[] args) {
ConcreteClassA concreteClassA = new ConcreteClassA();
ConcreteClassB concreteClassB = new ConcreteClassB();
concreteClassA.templateMethod();
concreteClassB.templateMethod();
}
}