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

    一、 模式名

    模版方法,Template Method

    二、 解决的问题

    模版方法在父类中定义了某种算法的骨架,在子类中实现该算法骨架中调用的某些方法,从而达到改变该算法的目的。

    如果不使用这种设计模式实现某些解决流程相同,只不过具体实现不同的问题,那么需要将该问题的解决流程重复多写几遍,增加了系统代码的冗余,降低了系统代码的灵活性。如果该问题的解决流程需要调整,那么所有利用该解决流程的方案都需要作出调整,这样无疑降低了系统可扩展性。

    三、解决方案

    clipboard

    可以看到定义了一个父类抽象类,抽象类中定义了某种算法的解决流程方法,其中某些关键步骤调用对应的抽象方法,两个子类分别继承该抽象类,实现对应的抽象方法,随后就能使用对应的算法。

    模版方法的Java实现Demo如下:

    abstract class AbstractClass {
        public void templateMethod() {
            if(abstractMethod1()) {
                abstractMethod2();
            }
        }
        
        public abstract void abstractMethod1();
        public abstract void abstractMethod2();
    }
    
    SubClass1 extends AbstractClass {
        protected void abstractMethod1() {
            ...
        }
        
        protected void abstractMethod2() {
            ...
        }
    }
    
    // 使用
    public class Main {
        public static void main(String[] args) {
            AbstractClass obj = new SubClass1();
            // 调用模版方法
            obj.templateMethod();
        }
    }

    常见应用场景:

    1. JDBC

    2. Spring中的 bean 加载

  • 相关阅读:
    getchar,putchar函数
    强制类型转换和整数常量的数据类型及转换
    c语言整型的隐式数据 类型转换
    c语言整型数据输出格式声明
    c语言整型变量的储存空间,以及所表示的整数范围
    c语言常量
    c语言求回文数
    Android4.0源码目录结构详解
    MTK Android源代码目录
    Comparator 和 Comparable
  • 原文地址:https://www.cnblogs.com/glsy/p/11062227.html
Copyright © 2011-2022 走看看