资讯专栏INFORMATION COLUMN

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

lushan / 3118人阅读

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

</>复制代码

  1. /**
  2. * Builder 建造者模式
  3. * -------------------------------------
  4. * ** 来自说明 **
  5. *
  6. * 建造者设计模式的母的是消除其他对象的复杂创建过程,
  7. * 使用建造者设计模式不仅是最佳的做法
  8. * 而且在某个对象的构造和配置方法改变时尽可能地减少重复的代码
  9. *
  10. * =====================================
  11. * ** 应用场景 **
  12. *
  13. * 数据库接口类 | 优化基类
  14. *
  15. * -------------------------------------
  16. *
  17. * @version ${Id}$
  18. * @author Shaowei Pu <54268491@qq.com>
  19. */

</>复制代码

  1. // 现在是这样一个情况,您是学生个人档案录入员,你看到了你们Boss 在许多年前,你还是一个乳臭未干的小孩时写的录入类
  2. class Entering {
  3. public $info = [];
  4. public function setName( $name ){
  5. $this->info["name"] = $name;
  6. }
  7. public function setOld( $old ){
  8. $this->info["old"] = $old;
  9. }
  10. public function setGender( $gender ){
  11. $this->info["gander"] = $gender;
  12. }
  13. }
  14. // 然后
  15. $worker = new Entering;
  16. $worker->setName("jacky");
  17. $worker->setOld("22");
  18. $worker->setGender("男");
  19. // 然后这样就可以了,一个学生的完整信息就这么弄出来了
  20. var_dump($worker->info);
  21. /*
  22. +----------------------------------------------------------------------
  23. | array (size=3)
  24. | "name" => string "jacky" (length=5)
  25. | "old" => string "22" (length=2)
  26. | "gander" => string "男" (length=3)
  27. +----------------------------------------------------------------------
  28. */
  29. // 但是爱折腾的你从来不会放弃任何机会,自从学习了建造者模式的你 总有种蠢蠢欲动,于是乎就有了下面的类
  30. class EnteringBuilder{
  31. protected $_baseObject = null;
  32. protected $_newInfo = [] ;
  33. public function __construct( array $info ){
  34. $this->_baseObject = new Entering;
  35. $this->_newInfo = $info;
  36. }
  37. public function build(){
  38. $this->_baseObject->setName ( $this->_newInfo["name"]);
  39. $this->_baseObject->setOld ( $this->_newInfo["old"]);
  40. $this->_baseObject->setGender( $this->_newInfo["gander"]);
  41. }
  42. public function getInfo(){
  43. return $this->_baseObject->info;
  44. }
  45. }
  46. // 然后这样
  47. $new_worker = new EnteringBuilder([
  48. "name" => "lucy",
  49. "old" => 22,
  50. "gander" => "女",
  51. ]);
  52. $new_worker->build();
  53. // 然后这样就可以了,一个学生的完整信息就这么弄出来了
  54. var_dump($new_worker->getInfo());
  55. /*
  56. +----------------------------------------------------------------------
  57. | array (size=22)
  58. | "Host" => string "localhost" (length=9)
  59. | "Db" => string "sys" (length=3)
  60. | "User" => string "mysql.sys" (length=9)
  61. | "Select_priv" => string "N" (length=1)
  62. | "Insert_priv" => string "N" (length=1)
  63. | "Update_priv" => string "N" (length=1)
  64. | "Delete_priv" => string "N" (length=1)
  65. | "Create_priv" => string "N" (length=1)
  66. | "Drop_priv" => string "N" (length=1)
  67. | "Grant_priv" => string "N" (length=1)
  68. | "References_priv" => string "N" (length=1)
  69. | "Index_priv" => string "N" (length=1)
  70. | "Alter_priv" => string "N" (length=1)
  71. | "Create_tmp_table_priv" => string "N" (length=1)
  72. | "Lock_tables_priv" => string "N" (length=1)
  73. | "Create_view_priv" => string "N" (length=1)
  74. | "Show_view_priv" => string "N" (length=1)
  75. | "Create_routine_priv" => string "N" (length=1)
  76. | "Alter_routine_priv" => string "N" (length=1)
  77. | "Execute_priv" => string "N" (length=1)
  78. | "Event_priv" => string "N" (length=1)
  79. | "Trigger_priv" => string "Y" (length=1)
  80. +----------------------------------------------------------------------
  81. */

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

转载请注明本文地址: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元查看
<