zoukankan      html  css  js  c++  java
  • 设计模式之模板方法

    定义:

      定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    UML类图:

    具体代码:

    public class Client {
        public static void main(String[] args) {
            ConcreteClass cc = new ConcreteClass();
            cc.init();
        }
    }
    
    public abstract class AbstractClass {
        public abstract void operation1();
        public abstract void operation2();
        public void templateMeathod() {
            System.out.println("公共模板");
        }
    
        public void init() {
            operation1();
            templateMeathod();
            operation2();
        }
    }
    
    public class ConcreteClass extends AbstractClass {
    
        @Override
        public void operation1() {
            System.out.println("个性操作1");
        }
    
        @Override
        public void operation2() {
            System.out.println("个性操作2");
        }
    }
    
    个性操作1
    公共模板
    个性操作2

    模块说明:

    AbstractClass:抽象类,定义整个流程算法的骨架。
    ConcreteClass:具体类,实现流程算法里的具体步骤。

    适用场景:
    定制流程的比如,框架的初始化,对账等等。其中我们的项目对账里就是这样的,
    对账先下载文件,校验文件,解析文件,录入拆分,比对数据等等,类似的就很适合应用模板方法模式。

    优缺点:

    优点:
    实现了代码的复用。
    缺点:
    抽象类定义的模板与子类耦合度很高,不容易实现扩展。如果流程有变化,可能影响整个所有子类的调整。

    总结:
    代码复用,且固定算法流程。

  • 相关阅读:
    vue input输入框长度限制
    vue中input输入框的模糊查询实现
    腾讯云服务器配置node环境
    axios中的this指向问题
    腾讯云服务器 ubuntu 设置允许root用户登录
    nodejs+express+mongodb写api接口的简单尝试
    通过fromdata实现上传文件
    阿姆斯特朗数
    Mac上webstorm与git仓库建立连接
    iOS学习——属性引用self.xx与_xx的区别
  • 原文地址:https://www.cnblogs.com/daily-note/p/7521475.html
Copyright © 2011-2022 走看看