• 设计模式-模块方法模式(TemplateMethod)


    模块方法模式是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承对抽象方法的不同实现改变整个算法的行为。

    UML图:

    具体代码:

    /**
     * 抽象-模块方法模式核心
     */
    public abstract class AbstractPage {
        public abstract void makeHeader();//组装页面头部
        public abstract void makeBody();//组装页面body
        public abstract void makeFooter();//组装页脚
    
        public void make(){
            makeHeader();//组装头
            makeBody();//组装身
            makeFooter();//组装脚
        }
    }
    /**
     * 页面1
     */
    public class Page1 extends AbstractPage{
        @Override
        public void makeHeader() {
            System.out.println("页面1,写头");
        }
    
        @Override
        public void makeBody() {
            System.out.println("页面1,写身");
        }
    
        @Override
        public void makeFooter() {
            System.out.println("页面1,写脚");
        }
    }
    /**
     * 页面2
     */
    public class Page2 extends AbstractPage{
        @Override
        public void makeHeader() {
            System.out.println("页面2,写头");
        }
    
        @Override
        public void makeBody() {
            System.out.println("页面2,写身");
        }
    
        @Override
        public void makeFooter() {
            System.out.println("页面2,写脚");
        }
    }
    public class Main {
        public static void main(String[] args) {
            AbstractPage page1 = new Page1();
            page1.make();//页面1拼装
    
            System.out.println("---------------------------");
    
            AbstractPage page2 = new Page2();
            page2.make();//页面2拼装
        }
    }

    结果:

    页面1,写头
    页面1,写身
    页面1,写脚
    ---------------------------
    页面2,写头
    页面2,写身
    页面2,写脚

    应用场景:

    1.具有统一的操作步骤或操作过程

    2.具有不同的操作细节

    3.存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同

    源码地址:https://github.com/qjm201000/design_pattern_templateMethod.git

  • 相关阅读:
    程序猿和产品狗
    编写一个友元函数,求两个日期之间相差的天数
    集合的模拟实现(类模板)
    友元很简单2016final
    攻防世界-parallel-comparator-200
    web-GXYCTF2019 StrongestMind
    破解010Editor
    2020第三届江西省高校网络安全技能大赛线下解题赛部分wp
    pwn-EasyHeap(House of spirit)
    web-2020 ciscn littlegame(原型链污染)
  • 原文地址:https://www.cnblogs.com/qjm201000/p/10107571.html
Copyright © 2020-2023  润新知