zoukankan      html  css  js  c++  java
  • 【php设计模式】模板模式

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

      通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按照完成事件需要的步骤去调用其每个步骤的实现方法。每个步骤的具体实现,由子类完成。

    以设计游戏为例,我们先定义游戏的大概框架,然后使各个不同的游戏来继承这个游戏框架,并实现框架中具体的方法

    <?php
    abstract class Game{
        abstract function initialize();
        abstract function startPlay();
        abstract function endPlay();
    
        //定义模板
        final public function play(){
            //初始化游戏
            $this->initialize();
            //开始游戏
            $this->startPlay();
            //结束游戏
            $this->endPlay();
        } 
    }
    
    class HunDouLuo extends Game{
        public function initialize(){
            echo "HunDouLuo Game Initialized! Start playing.
    ";
        }
    
        public function startPlay(){
            echo "HunDouLuo Game Started. Enjoy the game!
    ";
        }
    
        public function endPlay(){
            echo "HunDouLuo Game Finished!
    ";
        }
    }
    
    class TanKe extends Game{
        public function initialize(){
            echo "TanKe Game Initialized! Start playing.
    ";
        }
    
        public function startPlay(){
            echo "TanKe Game Started. Enjoy the game!
    ";
        }
    
        public function endPlay(){
            echo "TanKe Game Finished!
    ";
        }
    }
    
    $hdl = new HunDouLuo();
    $hdl->play();
    
    $tk = new TanKe();
    $tk->play();
  • 相关阅读:
    core mvc 分页
    core下的routelink
    python 3使用binascii方法的报错解决
    汉字乱码处理
    DLL的调用方法
    Python内置函数清单
    Linux 几种上传文件到linux服务的方法
    在VS中添加lib的第三种方法
    Bash Shell 数字/字符比较大小
    虚拟Linux服务器不能获取IP的解决办法
  • 原文地址:https://www.cnblogs.com/itsuibi/p/11057669.html
Copyright © 2011-2022 走看看