3、模板方法模式

2019-12-16  本文已影响0人  lois想当大佬

模板方法模式
定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
用途:定义一个稳定的算法流程
思想:
1、抽象父类含有稳定的框架
2、子类重写变化部分

1、抽象父类

package com.hello.template_method;

/**
 * 模板模式
 * 定义一个稳定的算法流程
 * 1、父类含有稳定的框架
 * 2、子类重写变化部分
 */
public abstract class Lib {

    /**
     * 固定的算法流程/框架,定义为final避免子类覆盖
     */
    public final void run() {
        step1();

        if (step2()) { // 支持变化,多态调用
            step3();
        }
        for (int i=0; i<4; i++){
            step4();// 支持变化,多态调用
        }

        step5();

    }

    public void step1() {
        System.out.println("Lib:step1");
    };
    public void step3() {
        System.out.println("Lib:step3");
    };
    public void step5() {
        System.out.println("Lib:step5");
    };
    public abstract boolean step2(); // 延迟到子类中实现
    public abstract void step4(); // 延迟到子类中实现
}



2、子类

package com.hello.template_method;

public class App extends Lib {

    @Override
    public boolean step2() {
        System.out.println("App:step2");
        return true;
    };
    @Override
    public void step4() {
        System.out.println("App:step4");
    };
}



3、客户端

package com.hello.template_method;

public class Client {

    public static void main(String[] args) {
        Lib lib = new App();
        lib.run();
    }
}



上一篇:工厂模式

上一篇下一篇

猜你喜欢

热点阅读