首页 > 语言 > 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. public $_head
  11. public $_engine;//引擎 
  12. public $_tyre;//轮胎 
  13.  
  14. function show() 
  15. echo "车头的颜色:{$this->_head}<br/>"
  16. echo "引擎的品牌:{$this->_engine}<br/>"
  17. echo "轮胎的品牌:{$this->_tyre}<br/>"
  18.  
  19. /**抽象车的建造者(生成器) 
  20. * Class CarBuilder 
  21. */ 
  22. abstract class CarBuilder 
  23. protected $_car
  24.  
  25. function __construct() 
  26. $this->_car=new Car(); 
  27.  
  28. abstract function BuildHead(); 
  29. abstract function BuildEngine(); 
  30. abstract function BuildTyre(); 
  31. abstract function GetCar(); 
  32.  
  33. /**具体车的建造者(生成器) 宝马 
  34. * Class BMW 
  35. */ 
  36. class BMW extends CarBuilder 
  37.  
  38. function BuildHead() 
  39. // TODO: Implement BuilderHead() method. 
  40. $this->_car->_head="Black"
  41.  
  42. function BuildEngine() 
  43. // TODO: Implement BuildEngine() method. 
  44. $this->_car->_engine="BMW"
  45.  
  46. function BuildTyre() 
  47. // TODO: Implement BuildTyre() method. 
  48. $this->_car->_tyre="BMW"
  49.  
  50. function GetCar() 
  51. // TODO: Implement GetCar() method. 
  52. return $this->_car; 
  53.  
  54. /**别克 
  55. * Class BuickBird 
  56. */ 
  57. class BuickBird extends CarBuilder 
  58.  
  59. function BuildHead() 
  60. // TODO: Implement BuildHead() method. 
  61. $this->_car->_head="Red"
  62.  
  63. function BuildEngine() 
  64. // TODO: Implement BuildEngine() BMmethod. 
  65. $this->_car->_engine="Buick";// 
  66.  
  67. function BuildTyre() 
  68. // TODO: Implement BuildTyre() method. 
  69. $this->_car->_tyre="Buick"
  70.  
  71. function GetCar() 
  72. // TODO: Implement GetCar() method. 
  73. return $this->_car; 
  74.  
  75. /**指挥者 
  76. * Class Director 
  77. */ 
  78. class Director 
  79. /** 
  80. * @param $_builder 建造者 
  81. * @return mixed 产品类:车 
  82. */ 
  83. function Construct($_builder
  84. //Vevb.com 
  85. $_builder->BuildHead(); 
  86. $_builder->BuildEngine(); 
  87. $_builder->BuildTyre(); 
  88. return $_builder->GetCar(); 

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