• 模版方法


    概述:

           准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方法实现这些抽象方法,从而对剩余逻辑有不同的实现。

          适用性

    模板方法应用于下列情况:
    • 1) 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
    • 2)各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。
    • 3)控制子类扩展。模板方法只在特定点调用“ hook”操作 ,这样就只允许在这些点进行扩展。

    抽象类(AbstractClass): 定义抽象的原语操作(primitive operation) ,具体的子类将重定义它们以实现一个算法, 实现一个模板方法,定义一个算法的骨架。该模板方法不仅调用原语操作,也调用定义
    具体子类 (ConcreteClass):  实现原语操作以完成算法中与特定子类相关的步骤。

    模板方法模式的优点:
    1)模板方法模式在一个类中形式化地定义算法,而由它的子类实现细节的处理。
    2)模板方法是一种代码复用的基本技术。它们在类库中尤为重要,它们提取了类库中的公共行为。
    3)模板方法模式导致一种反向的控制结构,这种结构有时被称为“好莱坞法则” ,即“别找我们,,我们找你”通过一个父类调用其子类的操作(而不是相反的子类调用父类),通过对子类的扩展增加新的行为,符合“开闭原则” 模板方法模式的缺点:
    每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大,设计也更加抽象,但是更加符合“单一职责原则”,使得类的内聚性得以提高。

  • 相关阅读:
    如何快速的开发一个完整的iOS直播app(采集篇)
    直播相关讲解 视频直播技术大全、直播架构、技术原理和实现思路方案整理
    mybatis中的数据源和连接池
    Java8新特性终极指南
    实战!日志打印的15个好建议
    我在腾讯这一年、如何防止订单重复支付?|掘金一周 07.27
    JSON.parse(JSON.stringify()) 实现对对象的深拷贝
    JSON.parse(JSON.stringify(obj))实现深拷贝
    前端深拷贝和浅拷贝
    深入解析JSON.stringify和JSON.parse
  • 原文地址:https://www.cnblogs.com/whesuanfa/p/7473481.html
Copyright © 2020-2023  润新知