组成
抽象模版类
抽象模版类中提供原始的计算顺序或者业务流程,在总的业务流程中留出可供修改的方法,以适应不同环境下的业务要求。
具体模版类
针对不同环境下的业务要求实现。
主要是针对不同环境下对不同业务分开处理,以改变在最后的结果,提高代码重用性。
实现
抽象模板类:
/**
* 抽象模板类
*/
public abstract class AbstractClass {
private void OneMethod() {
System.out.println("一号模版方法...");
}
protected abstract void doSomething();
protected abstract void doAnything();
private void TwoMethod(){
System.out.println("二号模版方法...");
}
public void templateMethod(){
this.OneMethod();
this.doAnything();
this.TwoMethod();
this.doSomething();
}
}
具体模板类:
/**
* @program: JavaDesignPattern
* @description: 具体模版
* @author: 郑畅道
* @create: 2019-11-16 20:35
**/
public class ConcreteClassOne extends AbstractClass {
@Override
protected void doSomething() {
System.out.println(this.getClass().getName() + "修改二号模版方法产生结果....");
}
@Override
protected void doAnything() {
System.out.println(this.getClass().getName() + "修改一号模版方法全部产生的数据...");
}
}
/**
* @program: JavaDesignPattern
* @description: 具体模版类2
* @author: 郑畅道
* @create: 2019-11-16 20:39
**/
public class ConcreteClassTwo extends AbstractClass {
@Override
protected void doSomething() {
System.out.println(this.getClass().getName() + "修改二号模版方法部分产生的数据...");
}
@Override
protected void doAnything() {
System.out.println(this.getClass().getName() + "修改一号模版方法产生的数据...");
}
}
客户端:
/**
* @program: JavaDesignPattern
* @description: 客户端
* @author: 郑畅道
* @create: 2019-11-16 20:44
**/
public class Client {
public static void main(String[] args) {
AbstractClass c1 = new ConcreteClassOne();
AbstractClass c2 = new ConcreteClassTwo();
c1.templateMethod();
c2.templateMethod();
}
}