首页 > 语言 > PHP > 正文

php 建造者生成器模式学习笔记

2024-09-04 11:43:50
字体:大 中 小
来源:转载
供稿:网友

本文章来为各位整理一篇关于php建造者生成器模式学习笔记,希望这篇文章能够帮助到各位朋友哦,有兴趣的朋友可以进来看看的哦.

适用场景:

1、需要生成的产品对象有复杂的内部结构。

2、需要生成的产品对象的属性相互依赖,生成器模式可以强迫生成顺序。

3、在对象创建过程中会使用到系统中的一些其它对象,这些对象在产品对象的创建过程中不易得到。

使用效果:

1、生成器模式的使用使得产品的内部表象可以独立的变化,使用生成器模式可以使客户端不必知道产品内部组成的细节.

2、每一个Builder都相对独立,而与其它的Builder无关.

3、模式所建造的最终产品更易于控制.

  1. <?php 
  2. /** 
  3. * Created by PhpStorm. 
  4. */ 
  5.  
  6. /**具体产品角色 车 
  7. * Class Car 
  8. */ 
  9. class Car 
  10. { 
  11. public $_head; 
  12. public $_engine;//引擎 
  13. public $_tyre;//轮胎 
  14.  
  15. function show() 
  16. { 
  17. echo "车头的颜色:{$this->_head}<br/>"; 
  18. echo "引擎的品牌:{$this->_engine}<br/>"; 
  19. echo "轮胎的品牌:{$this->_tyre}<br/>"; 
  20. } 
  21. } 
  22.  
  23. /**抽象车的建造者(生成器) 
  24. * Class CarBuilder 
  25. */ 
  26. abstract class CarBuilder 
  27. { 
  28. protected $_car; 
  29.  
  30. function __construct() 
  31. { 
  32. $this->_car=new Car(); 
  33. } 
  34.  
  35. abstract function BuildHead(); 
  36. abstract function BuildEngine(); 
  37. abstract function BuildTyre(); 
  38. abstract function GetCar(); 
  39. } 
  40.  
  41. /**具体车的建造者(生成器) 宝马 
  42. * Class BMW 
  43. */ 
  44. class BMW extends CarBuilder 
  45. { 
  46.  
  47. function BuildHead() 
  48. { 
  49. // TODO: Implement BuilderHead() method. 
  50. $this->_car->_head="Black"; 
  51. } 
  52.  
  53. function BuildEngine() 
  54. { 
  55. // TODO: Implement BuildEngine() method. 
  56. $this->_car->_engine="BMW"; 
  57. } 
  58.  
  59. function BuildTyre() 
  60. { 
  61. // TODO: Implement BuildTyre() method. 
  62. $this->_car->_tyre="BMW"; 
  63. } 
  64.  
  65. function GetCar() 
  66. { 
  67. // TODO: Implement GetCar() method. 
  68. return $this->_car; 
  69. } 
  70. } 
  71.  
  72. /**别克 
  73. * Class BuickBird 
  74. */ 
  75. class BuickBird extends CarBuilder 
  76. { 
  77.  
  78. function BuildHead() 
  79. { 
  80. // TODO: Implement BuildHead() method. 
  81. $this->_car->_head="Red"; 
  82. } 
  83.  
  84. function BuildEngine() 
  85. { 
  86. // TODO: Implement BuildEngine() BMmethod. 
  87. $this->_car->_engine="Buick";// 
  88. } 
  89.  
  90. function BuildTyre() 
  91. { 
  92. // TODO: Implement BuildTyre() method. 
  93. $this->_car->_tyre="Buick"; 
  94. } 
  95.  
  96. function GetCar() 
  97. { 
  98. // TODO: Implement GetCar() method. 
  99. return $this->_car; 
  100. } 
  101. } 
  102.  
  103. /**指挥者 
  104. * Class Director 
  105. */ 
  106. class Director 
  107. { 
  108. /** 
  109. * @param $_builder 建造者 
  110. * @return mixed 产品类:车 
  111. */ 
  112. function Construct($_builder) 
  113. { //Vevb.com 
  114. $_builder->BuildHead(); 
  115. $_builder->BuildEngine(); 
  116. $_builder->BuildTyre(); 
  117. return $_builder->GetCar(); 
  118. } 
  119. } 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表