zoukankan      html  css  js  c++  java
  • 模板模式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

  • 相关阅读:
    练习:利用函数写一个扑克牌列表
    练习:利用函数实现一个登陆系统
    练习:利用函数实现一个注册系统
    函数的进阶
    Python的函数, 返回值, 参数
    Python中文件的读写操作
    练习:根据车牌信息,统计各省车牌持有量
    练习: 三次机会登录系统
    Chapter06_类与对象、封装、构造方法
    创建对象时,该对象的成员变量如果不赋值的情况下,默认值是
  • 原文地址:https://www.cnblogs.com/manusas/p/8329532.html
Copyright © 2011-2022 走看看