PHP面向对象深入理解之四(设计模式-工厂模式)

女爷i 2022-06-10 00:41 301阅读 0赞

适用于创建相同类型的模型类 能使代码更加健壮
举个栗子:车Car —> 奥迪,福特,宝马… 我们要造一辆

重要的是我们不需要引入所有相关类,我们只需要引入一个工厂类 即可

Center

  1. interface Car
  2. {
  3. public function makeCircle();
  4. public function makeBody();
  5. public function makeEngine();
  6. public function makeDecoration();
  7. }
  8. class Audi
  9. {
  10. public function makeCircle()
  11. {
  12. echo 'make Audi Circle';
  13. }
  14. public function makeBody()
  15. {
  16. echo 'make Audi Body';
  17. }
  18. public function makeEngine()
  19. {
  20. echo 'make Audi Engine';
  21. }
  22. public function makeDecoration()
  23. {
  24. echo 'make Audi Decoration';
  25. }
  26. public function makeAuto()
  27. {
  28. }
  29. }
  30. class Ford
  31. {
  32. public function makeCircle()
  33. {
  34. echo 'make Audi Circle';
  35. }
  36. public function makeBody()
  37. {
  38. echo 'make Audi Body';
  39. }
  40. public function makeEngine()
  41. {
  42. echo 'make Audi Engine';
  43. }
  44. public function makeDecoration()
  45. {
  46. echo 'make Audi Decoration';
  47. }
  48. public function makeHandle()
  49. {
  50. }
  51. }
  52. class BMW
  53. {
  54. public function makeCircle()
  55. {
  56. echo 'make BMW Circle';
  57. }
  58. public function makeBody()
  59. {
  60. echo 'make BMW Body';
  61. }
  62. public function makeEngine()
  63. {
  64. echo 'make BMW Engine';
  65. }
  66. public function makeDecoration()
  67. {
  68. echo 'make BMW Decoration';
  69. }
  70. public function makeAll()
  71. {
  72. }
  73. }
  74. class CarFactory
  75. {
  76. static public function create($class,$params)
  77. {
  78. if(!class_exists($class)){
  79. throw new Exception("class not existis!");
  80. }
  81. return new $class($params);
  82. }
  83. }
  84. $audi = CarFactory::create('Audi',’15w‘);
  85. $audi->makeCircle();
  86. $bmw = CarFactory::create('BMW',’100w‘);
  87. $bmw->makeAll();

发表评论

表情:
评论列表 (有 0 条评论,301人围观)

还没有评论,来说两句吧...

相关阅读