资讯专栏INFORMATION COLUMN

PHP设计模式-Builder 建造者模式

lushan / 3061人阅读

整理一下自己的学习Aaron Saray 写的PHP设计模式一些demo和自己的理解。大佬看完如果发现鄙人理解有误请立即指出,感谢拍砖,跪求鞭打

/**
 * Builder  建造者模式
 * -------------------------------------
 * ** 来自说明 **
 *
 * 建造者设计模式的母的是消除其他对象的复杂创建过程,
 * 使用建造者设计模式不仅是最佳的做法
 * 而且在某个对象的构造和配置方法改变时尽可能地减少重复的代码
 * 
 * ===================================== 
 * ** 应用场景 **
 *
 * 数据库接口类 | 优化基类
 * 
 * -------------------------------------
 * 
 * @version ${Id}$
 * @author Shaowei Pu <54268491@qq.com>
 */
// 现在是这样一个情况,您是学生个人档案录入员,你看到了你们Boss 在许多年前,你还是一个乳臭未干的小孩时写的录入类 
class Entering {

    public $info = [];
    public function setName( $name ){
        $this->info["name"] = $name;
    }

    public function setOld( $old ){
        $this->info["old"] = $old;
    }

    public function setGender( $gender ){
        $this->info["gander"]  = $gender;
    }
}
// 然后
$worker = new Entering;
$worker->setName("jacky");
$worker->setOld("22");
$worker->setGender("男");
// 然后这样就可以了,一个学生的完整信息就这么弄出来了
var_dump($worker->info);
/* 
+----------------------------------------------------------------------
| array (size=3)
|   "name"      => string "jacky" (length=5)
|   "old"      => string "22" (length=2)
|   "gander" => string "男" (length=3)
+----------------------------------------------------------------------
*/

// 但是爱折腾的你从来不会放弃任何机会,自从学习了建造者模式的你 总有种蠢蠢欲动,于是乎就有了下面的类
class EnteringBuilder{
    
    protected $_baseObject = null;
    protected $_newInfo    = []  ;

    public function __construct( array $info ){
        $this->_baseObject = new Entering;
        $this->_newInfo  = $info;
    }

    public function build(){
        $this->_baseObject->setName  (  $this->_newInfo["name"]);
        $this->_baseObject->setOld      (  $this->_newInfo["old"]);
        $this->_baseObject->setGender(  $this->_newInfo["gander"]);
    }

    public function getInfo(){
        return $this->_baseObject->info;
    }
}

// 然后这样
$new_worker = new EnteringBuilder([
            "name"      => "lucy",
            "old"      =>  22,
            "gander" => "女",
    ]);
$new_worker->build();
// 然后这样就可以了,一个学生的完整信息就这么弄出来了
var_dump($new_worker->getInfo());
 
/* 
+----------------------------------------------------------------------
|    array (size=22)
|      "Host" => string "localhost" (length=9)
|      "Db" => string "sys" (length=3)
|      "User" => string "mysql.sys" (length=9)
|      "Select_priv" => string "N" (length=1)
|      "Insert_priv" => string "N" (length=1)
|      "Update_priv" => string "N" (length=1)
|      "Delete_priv" => string "N" (length=1)
|      "Create_priv" => string "N" (length=1)
|      "Drop_priv" => string "N" (length=1)
|      "Grant_priv" => string "N" (length=1)
|      "References_priv" => string "N" (length=1)
|      "Index_priv" => string "N" (length=1)
|      "Alter_priv" => string "N" (length=1)
|      "Create_tmp_table_priv" => string "N" (length=1)
|      "Lock_tables_priv" => string "N" (length=1)
|      "Create_view_priv" => string "N" (length=1)
|      "Show_view_priv" => string "N" (length=1)
|      "Create_routine_priv" => string "N" (length=1)
|      "Alter_routine_priv" => string "N" (length=1)
|      "Execute_priv" => string "N" (length=1)
|      "Event_priv" => string "N" (length=1)
|      "Trigger_priv" => string "Y" (length=1)
+----------------------------------------------------------------------
*/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/39456.html

相关文章

  • PHP设计模式(五)建造模式Builder

    摘要:与工厂模式相比,建造者模式一般用来创建更为复杂的对象,因为对象的创建过程更为复杂,因此将对象的创建过程独立出来组成一个新的类导演类。 什么是建造者设计模式 建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式。 设计场景: 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,爱好等信息,才能获得用户具体的信息结果。如: 这是一个...

    KunMinX 评论0 收藏0
  • PHP设计模式-Builder 建造模式

    整理一下自己的学习Aaron Saray 写的PHP设计模式一些demo和自己的理解。大佬看完如果发现鄙人理解有误请立即指出,感谢拍砖,跪求鞭打 /** * Builder 建造者模式 * ------------------------------------- * ** 来自说明 ** * * 建造者设计模式的母的是消除其他对象的复杂创建过程, * 使用建造者设计模式不仅是最佳...

    hizengzeng 评论0 收藏0
  • PHP面试常考之设计模式——建造模式

    摘要:你好,是我琉忆,程序员面试笔试系列图书的作者。建造者模式介绍建造者模式又名生成器模式,是一种对象构建模式。表示被构造的复杂对象。创建该产品的内部表示并定义它的装配过程。 你好,是我琉忆,PHP程序员面试笔试系列图书的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面试常考之设计模式——工厂模式周三:PHP面试常考之设计模式——建造者模式周五:PHP面...

    alexnevsky 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<