加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP设计模式之建造者模式定义与用法简单示例

发布时间:2020-12-12 22:33:38 所属栏目:PHP教程 来源:网络整理
导读:本篇章节讲解PHP设计模式之建造者模式。供大家参考研究具体如下: 建造者模式: 将复杂对象的创建过程和表示进行分离(好吧,我也看不懂什么意思1)。 来点我人类能听懂的话: 1、在客户端看来需要的仅仅是实例化后的类对象(大多数情况下是需要类

本篇章节讲解PHP设计模式之建造者模式。分享给大家供大家参考,具体如下:

建造者模式:

将复杂对象的创建过程和表示进行分离(好吧,我也看不懂什么意思1)。

来点我人类能听懂的话:

  • 1、在客户端看来需要的仅仅是实例化后的类对象(大多数情况下是需要类的属性)。
  • 2、传统方式下当类有了之后,一般直接通过new class()的方式直接进行实例化,然后通过$obj->set1()构建属性1,$obj->set2()构建属性2,$obj->set3()构建属性3。。。
  • 3、传统方式有一个很大的弊端:当我们的类发生改变后,我们需要大量的修改,比如文件1中加上$obj->set4(),文件2中加上$obj->set4(),增加很多的工作量。
  • 4、建造者模式会给出构建对象的具体实现类,将对象的创建实例化过程封装在建造者类中,并给出一个返回构建后对象的方法,将构建后的对象返回。
  • 5、当类发生改变后,只需要改变建造者类中构建对象的build()方法,对客户端来说,这并不可见,并且不用做修改就得到了修改后的对象。改动的只是需求对象修改后的逻辑处理。

代码:

_head=$head; } public function getHead(){ echo $this->_head; } public function setBody($body){ $this->_body=$body; } public function getBody(){ echo $this->_body; } } /* 抽象建造者: 定义的一个抽象接口,用于对具体建造者类进行规范 */ interface Builder{ public function buildHead(); public function buildBody(); public function getResult(); } /* 具体建造者: 用于实现具体建造者类 */ class ConcreteBuilder implements Builder{ public $person; public $data; public function __construct($data){ $this->person=new Person(); $this->data=$data; } public function buildHead(){ $this->person->setHead($this->data['head']); } public function buildBody(){ $this->person->setBody($this->data['body']); } public function getResult(){ return $this->person; } } /* 导演者类: 用于调用具体建造者类创建产品类实例 */ class Director{ public function __construct(ConcreteBuilder $builder){ $builder->buildHead(); $builder->buildBody(); } } /* 客户端: 根据需求进行逻辑处理 */ $data=array( 'head'=>'大头儿子','body'=>'身体棒棒哒' ); $builder=new ConcreteBuilder($data); $director=new Director($builder); $person=$builder->getResult(); echo $person->_head; echo $person->_body;

运行结果:

大头儿子身体棒棒哒

更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》

希望本文所述对大家PHP程序设计有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读