美文网首页
3、模板方法模式

3、模板方法模式

作者: lois想当大佬 | 来源:发表于2019-12-16 14:48 被阅读0次

    模板方法模式
    定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
    用途:定义一个稳定的算法流程
    思想:
    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();
        }
    }
    



    上一篇:工厂模式

    相关文章

      网友评论

          本文标题:3、模板方法模式

          本文链接:https://www.haomeiwen.com/subject/azwrnctx.html