美文网首页
我所理解的模板方法模式

我所理解的模板方法模式

作者: 蜗牛淋雨 | 来源:发表于2018-08-27 14:34 被阅读0次

定义

在父类中定义处理流程的框架,在子类中实现具体处理的模式就称为模板方法模式

参与角色

抽象类(AbstractClass)

抽象类不仅负责实现模板方法,还负责声明在模板方法中所使用到的抽象方法。

具体类(子类)

该角色负责具体实现抽象类角色中定义的抽象方法。这里实现的方法将会在抽象类角色的模板方法中被调用。

优点

  • 封装不变部分,扩展可变部分
  • 提取公共部分代码,便于维护
  • 行为由父类控制,子类负责实现

使用场景

  • 多个子类有共有方法,并且逻辑基本相同
  • 重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现
  • 重构时,模板方法是一个经常使用的方法,把相同的代码抽取到父类中,然后通过构造函数约束其行为

代码示例

# 抽象类  AbstractClass.php
<?php

namespace App\Test;


abstract class AbstractClass
{
    /**
     * 模板方法,定义执行的流程
     */
    final public function main()
    {
        $this->operate1();
        $this->operate2();
    }

    /**
     * 操作1
     * @return mixed
     */
    abstract protected function operate1();

    /**
     * 操作2
     * @return mixed
     */
    abstract protected function operate2();

}
# 具体类1 ConcreteClassOne.php

<?php

namespace App\Test;


class ConcreteClassOne extends AbstractClass
{
    
    /**
     * 操作1
     * @return mixed|void
     */
    protected function operate1()
    {
        echo 'ConcreteClassOne: this is operate1';
    }

    /**
     * 操作2
     * @return mixed|void
     */
    protected function operate2()
    {
        echo "ConcreteClassOne: this is operate2";
    }


}
# 具体类2  ConcreteClassTwo
<?php

namespace App\Test;


class ConcreteClassTwo extends AbstractClass
{

    /**
     * 操作1
     * @return mixed|void
     */
    protected function operate1()
    {
        echo 'ConcreteClassTwo: this is operate1';
    }

    /**
     * 操作2
     * @return mixed|void
     */
    protected function operate2()
    {
        echo 'ConcreteClassTwo: this is operate2';
    }


}

相关文章

  • 我所理解的模板方法模式

    定义 参与角色 抽象类(AbstractClass) 抽象类不仅负责实现模板方法,还负责声明在模板方法中所使用到的...

  • 11.8设计模式-模板模式-详解

    设计模式-模式模式 模板方法模式详解 模板方法模式在android中的实际运用 1.模板方法模式详解 2.模板方法...

  • 第5章 -行为型模式-模板方法模式

    一、模板方法模式的简介 二、模板方法模式的优点 三、模板方法模式的应用场景 四、模板方法模式的实例

  • 模板方法模式

    模板方法模式 模板方法模式的定义 模板方法模式(Template Method Pattern)是如此简单,以致让...

  • 设计模式系列-模板方法模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 模板方法模式 定义 模板方法模式在一个方法中定义了算法...

  • 模板方法模式

    一、概念 二、模板方法模式UML图 三、模板方法模式的2个角色 四、模板方法与基本方法的概念 模板方法: 基本方法...

  • Java设计模式之模板(template)方法模式

    转载 1.对模板方法模式的一些个人理解 模板方法模式是结构最简单的行为型模式,有时,我们完成一件事情时次序是固定...

  • 设计模式 | 模板方法模式及典型应用

    本文的主要内容: 介绍模板方法模式 源码分析模板方法模式的典型应用Servlet 中的模板方法模式Mybatis ...

  • 模板方法模式

    一、模板方法模式介绍 二、模板方法模式代码实例

  • 设计模式之十——模板方法模式

    原文传送门 1 介绍 模板方法模式是类的行为模式。 1.1 什么是模板方法模式 模板方法模式是所有模式中最为常见的...

网友评论

      本文标题:我所理解的模板方法模式

      本文链接:https://www.haomeiwen.com/subject/ciaziftx.html