设计模式——模版模式

组成

抽象模版类

抽象模版类中提供原始的计算顺序或者业务流程,在总的业务流程中留出可供修改的方法,以适应不同环境下的业务要求。

具体模版类

针对不同环境下的业务要求实现。

主要是针对不同环境下对不同业务分开处理,以改变在最后的结果,提高代码重用性。

实现

抽象模板类:

/**
 * 抽象模板类
 */
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();
    }
}
发布了24 篇原创文章 · 获赞 8 · 访问量 1862

猜你喜欢

转载自blog.csdn.net/qq_40462579/article/details/103103355