模板方法模式:该模式主要思想是,通过抽象类(AbstractClass)对外提供调用入口【templateMethod()】,该入口方法有抽象类实现,抽象类有一些抽象方法【operationOne()、operationTwo()】,是子类【】必须实现的。通过调用入口进行调用子类实现的抽象方法,也可以根据不同的参数调用不同的具体实现类。
示例代码如下:
package com.mkf.pattern;
public abstract class AbstractClass {
public final void templateMethod(){
operationOne();
operationTwo();
}
abstract public void operationOne();
abstract public void operationTwo();
}
package com.mkf.pattern;
public class ClassOne extends AbstractClass {
@Override
public void operationOne() {
System.out.println("ClassOne 的 operationOne 被调用");
}
@Override
public void operationTwo() {
System.out.println("ClassOne 的 operationTwo 被调用");
}
}
package com.mkf.pattern;
public class ClassTwo extends AbstractClass {
@Override
public void operationOne() {
System.out.println("ClassTwo 的 operationOne 被调用");
}
@Override
public void operationTwo() {
System.out.println("ClassTwo 的 operationTwo 被调用");
}
}
package com.mkf.pattern;
public class TestTemplateMethod {
/**
* @param args
*/
public static void main(String[] args) {
AbstractClass acOne = new ClassOne();
acOne.templateMethod();
AbstractClass acTwo = new ClassTwo();
acTwo.templateMethod();
}
}
运行结果:
ClassOne 的 operationOne 被调用
ClassOne 的 operationTwo 被调用
ClassTwo 的 operationOne 被调用
ClassTwo 的 operationTwo 被调用