• 模板模式Template Method


    简介

    模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。比如定义一个操作中的算法的骨架,将步骤延迟到子类中。模板方法使得子类能够不去改变一个算法的结构即可重定义算法的某些特定步骤。

    角色

    抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。
    具体类(ConcreteClass):实现抽象类中的抽象方法,以完成完整的算法。

    类图

    示例

    抽象

    public abstract class AbstractTemplate {
        /**
         * 模板方法
         */
        public void templateMethod() {
            abstractMethod();
            hookMethod();
            concreteMethod();
        }
    
        /**
         * 虚拟方法的声明(由子类实现)
         */
        protected abstract void abstractMethod();
    
        /**
         * 钩子方法
         * 默认or空 如果子类实现就附加业务
         */
        protected void hookMethod() {
            System.out.println("钩子方法:空或者默认");
        }
    
        /**
         * 基本方法(已经实现)
         */
        private void concreteMethod() {
            //具体业务
            System.out.println("具体实现方法");
        }
    }

    具体

    public class ConcreteTemplate extends AbstractTemplate {
        //基本方法的实现
        protected void abstractMethod() {
            //业务相关的代码
            System.out.println("实现虚拟方法");
        }
    
        //重写父类的方法 按业务需求 是否重写钩子方法
        @Override
        protected void hookMethod() {
            //业务相关的代码
            System.out.println("钩子方法");
        }
    }

    Head First 设计模式(中文版)的示例:

    码云地址:https://gitee.com/manusas/TemplateMethod

  • 相关阅读:
    博途Portal TIA(PLC) + Scout (独立)驱动配置 CU320 + PM240-2
    TM41 修改分辨率
    用户注册
    用户名的登录认证
    CSS
    HTML
    python常用模块
    面对对象进阶
    面对对象之绑定方法和非绑定方法
    面对对象之封装
  • 原文地址:https://www.cnblogs.com/manusas/p/8329532.html
Copyright © 2020-2023  润新知