【php设计模式】模板模式

  定义一个操做中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类能够不改变算法的结构便可重定义该算法的某些特定步骤。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.\n";
    }

    public function startPlay(){
        echo "HunDouLuo Game Started. Enjoy the game!\n";
    }

    public function endPlay(){
        echo "HunDouLuo Game Finished!\n";
    }
}

class TanKe extends Game{
    public function initialize(){
        echo "TanKe Game Initialized! Start playing.\n";
    }

    public function startPlay(){
        echo "TanKe Game Started. Enjoy the game!\n";
    }

    public function endPlay(){
        echo "TanKe Game Finished!\n";
    }
}

$hdl = new HunDouLuo();
$hdl->play();

$tk = new TanKe();
$tk->play();
相关文章
相关标签/搜索