php设计模式之原型模式

来源:互联网 发布:碧海潮生曲 知乎 编辑:程序博客网 时间:2024/05/18 17:41

实现方式:

原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象。

何时使用:

原型模式适用于大对象的创建。创建一个大对象需要需要很大的开销,如果每次new就会消耗很大,原型模式仅需内存拷贝即可,这样就免去了类创建重复的初始化操作。

实例:

<?php/** *  * @authors mtg * @date    2015-08-20 10:10:47 */class People  {    public $name;    public $sex;    public $eye;    public $ear;    public $leg;    public $arm;    public $brain;   //一个人还需要其他各种属性,一个完整的人的初始化工作时非常复杂的    function __construct($name,$sex,$eye,$ear,$leg,$arm,$brain){               $this->name=$name;               $this->sex=$sex;               $this->eye=$eye;               $this->ear=$ear;               $this->leg=$leg;               $this->arm=$arm;               $this->brain=$brain;    }    public function copy()    {      return clone $this;    }    public function _setname($name)    {      $this->name=$name;    }    public function _setsex($sex)    {      $this->sex=$sex;    }    //还有很多修改属性的方法,此处省略;    public function appearance()    {        $it=$this->sex=="男孩"?'他':"她";        echo        $this->name."是一个".$this->sex.",".$it."有".$this->arm."的胳膊和".$this->brain."的大脑.";    }    public function run()    {        echo  $this->name."正在奔跑";        echo "</br>";    }    public function eat()    {        echo  $this->name."正在吃饭";       echo "</br>";    }    //省略各种方法}$xiaoming=new People("小明","男孩","","","","强壮的","聪明");$xiaoming->appearance();//小明是一个男孩,他有强壮的的胳膊和聪明的大脑.$xiaoming->run();//小明正在奔跑/*此处的作用是 *因为一个人的初始化复杂,所以采用原型模式。 */$xiaoqiang=$xiaoming->copy();$xiaoqiang->_setname('小强');//小强是一个男孩,他有强壮的的胳膊和聪明的大脑.$xiaoqiang->appearance();$xiaoqiang->run();//小强正在奔跑
0 0
原创粉丝点击