zoukankan      html  css  js  c++  java
  • PHP设计模式——模板模式

    声明:本系列博客參考资料《大话设计模式》,作者程杰。


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

    先制定一个顶级逻辑框架。而将逻辑的细节留给详细的子类去实现。


            UML类图:

           


             角色:        

             抽象模板角色(MakePhone):抽象模板类,定义了一个详细的算法流程和一些留给子类必须实现的抽象方法。

             详细子类角色(XiaoMi):实现MakePhone中的抽象方法。子类能够有自己独特的实现形式,可是运行流程受MakePhone控制

             核心代码:

            

    <?

    php /** * Created by PhpStorm-> * User extends Jang * Date extends 2015/6/10 * Time extends 11 extends 06 */ //抽象模板类 abstract class MakePhone { protected $name; public function __construct($name) { $this->name=$name; } public function MakeFlow() { $this->MakeBattery(); $this->MakeCamera(); $this->MakeScreen(); echo $this->name."手机生产完成!

    <hr/>"; } public abstract function MakeScreen(); public abstract function MakeBattery(); public abstract function MakeCamera(); } //小米手机 class XiaoMi extends MakePhone { public function __construct($name='小米') { parent::__construct($name); } public function MakeBattery() { echo "小米电池生产完成。<br/>"; } public function MakeCamera() { echo "小米相机生产完成!

    <br/>"; } public function MakeScreen() { echo "小米屏幕生产完成!

    <br/>"; } } //魅族手机 class FlyMe extends MakePhone { function __construct($name='魅族') { parent::__construct($name); } public function MakeBattery() { echo "魅族电池生产完成!

    <br/>"; } public function MakeCamera() { echo "魅族相机生产完成!<br/>"; } public function MakeScreen() { echo "魅族屏幕生产完成!

    <br/>"; } }


             调用client測试代码:

            

    header("Content-Type:text/html;charset=utf-8");
    //-------------------------模板模式---------------------
    require_once "./Template/Template.php";
    $miui=new XiaoMi();
    $flyMe=new FlyMe();
    
    $miui->MakeFlow();
    $flyMe->MakeFlow();


                  适用场景及优势:

            1、完毕某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更具体的层次上的实现可能不同一时候。

    我们通常考虑用模板模式来处理。

            2、当不变的和可变的行为在方法的子类实现中混合在一起的时候。不变的行为就会在子类中反复出现,我们通过模板模式把这些行为搬移到单一的地方,这样就帮助子类摆脱反复的不变行为的纠缠。

            3模板模式通过把不变的行为搬移到超级抽象类,去除子类中的反复代码来体现它的优势。

    模板模式提供了一个非常好的代码复用平台。

    欢迎关注我的视频课程,地址例如以下,谢谢。



       PHP面向对象设计模式
  • 相关阅读:
    Tensorflow2.0笔记07——神经网络复杂度
    Tensorflow2.0笔记06——扩展方法(本地读取数据集、简易神经网络、优化)
    Tensorflow2.0笔记05——程序实现鸢尾花数据集分类
    Tensorflow2.0笔记04——Tensorflow常用函数
    Tensorflow2.0笔记03——基本概念
    Tensorflow2.0笔记02——神经网络的设计过程
    菜鸟弹性调度系统的架构设计——阅读心得
    微博深度学习平台架构和实践——阅读心得
    豆瓣基础架构——阅读心得
    美团云的网络架构演进之路——阅读心得
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/7015908.html
Copyright © 2011-2022 走看看