php简单工厂模式示例 php设计模式入门教程

php中文网
发布: 2016-07-25 08:52:50
原创
1562人浏览过
  1. /**

  2. * 一个事例
  3. *
  4. * 一个农场,要向市场销售水果
  5. * 农场里有三种水果 苹果、葡萄
  6. * 我们设想:1、水果有多种属性,每个属性都有不同,但是,他们有共同的地方 | 生长、种植、收货、吃
  7. * 2、将来有可能会增加新的水果、我们需要定义一个接口来规范他们必须实现的方法
  8. * 3、我们需要获取某个水果的类,要从农场主那里去获取某个水果的实例,来知道如何生长、种植、收货、吃
  9. */
  10. /**

  11. * 虚拟产品接口类
  12. * 定义好需要实现的方法
  13. */
  14. interface fruit{

  15. /**

  16. * 生长
  17. */
  18. public function grow();
  19. /**

  20. * 种植
  21. */
  22. public function plant();

    立即学习PHP免费学习笔记(深入)”;

  23. /**

  24. * 收获
  25. */
  26. public function harvest();
  27. /**

  28. * 吃
  29. */
  30. public function eat();
  31. }
  32. /**

  33. * 定义具体产品类 苹果
  34. * 首先,我们要实现所继承的接口所定义的方法
  35. * 然后定义苹果所特有的属性,以及方法
  36. */
  37. class apple implements fruit{
  38. //苹果树有年龄

  39. private $treeAge;
  40. //苹果有颜色

  41. private $color;
  42. public function grow(){

  43. echo "grape grow";
  44. }
  45. public function plant(){

  46. echo "grape plant";
  47. }
  48. public function harvest(){

  49. echo "grape harvest";
  50. }
  51. public function eat(){

  52. echo "grape eat";
  53. }
  54. //取苹果树的年龄

    S-CMS企业建站系统(含APP/小程序)5.0 build20230614
    S-CMS企业建站系统(含APP/小程序)5.0 build20230614

    闪灵CMS企业建站系统是淄博闪灵网络科技有限公司开发的一款专门为企业建站提供解决方案的产品,前端模板样式主打HTML5模板,以动画效果好、页面流畅、响应式布局为特色,程序主体采用PHP+MYSQL构架,拥有独立自主开发的一整套函数、标签系统,具有极强的可扩展性,设计师可以非常简单的开发出漂亮实用的模板。系统自2015年发布第一个版本以来,至今已积累上万用户群,为上万企业提供最优质的建站方案。

    S-CMS企业建站系统(含APP/小程序)5.0 build20230614 0
    查看详情 S-CMS企业建站系统(含APP/小程序)5.0 build20230614
  55. public function getTreeAge(){
  56. return $this->treeAge;
  57. }
  58. //设置苹果树的年龄

  59. public function setTreeAge($age){
  60. $this->treeAge = $age;
  61. return trie;
  62. }
  63. }

  64. /**

  65. * 定义具体产品类 葡萄
  66. * 首先,我们要实现所继承的接口所定义的方法
  67. * 然后定义葡萄所特有的属性,以及方法
  68. */
  69. class grape implements fruit{
  70. //葡萄是否有籽

  71. private $seedLess;
  72. public function grow(){

  73. echo "apple grow";
  74. }
  75. public function plant(){

  76. echo "apple plant";
  77. }
  78. public function harvest(){

  79. echo "apple harvest";
  80. }
  81. public function eat(){

  82. echo "apple eat";
  83. }
  84. //有无籽取值

  85. public function getSeedLess(){
  86. return $this->seedLess;
  87. }
  88. //设置有籽无籽

  89. public function setSeedLess($seed){
  90. $this->seedLess = $seed;
  91. return true;
  92. }
  93. }
  94. /**

  95. *农场主类 用来获取实例化的水果
  96. *
  97. */
  98. class farmer{
  99. //定义个静态工厂方法

  100. public static function factory($fruitName){
  101. switch ($fruitName) {
  102. case 'apple':
  103. return new apple();
  104. break;
  105. case 'grape':
  106. return new grape();
  107. break;
  108. default:
  109. throw new badFruitException("Error no the fruit", 1);
  110. break;
  111. }
  112. }
  113. }
  114. class badFruitException extends Exception{

  115. public $msg;
  116. public $errType;
  117. public function __construct($msg = '' , $errType = 1){
  118. $this->msg = $msg;
  119. $this->errType = $errType;
  120. }
  121. }
  122. /**

  123. * 获取水果实例化的方法
  124. */
  125. try{
  126. $appleInstance = farmer::factory('apple');
  127. var_dump($appleInstance);
  128. }catch(badFruitException $err){
  129. echo $err->msg . "_______" . $err->errType;
  130. }
复制代码


PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号