三个类概括PHP的五种设计模式

WBOY
发布: 2016-07-25 09:06:46
原创
742 人浏览过
工厂模式
单元素模式
观察者模式
命令链模式
策略模式
  1. class people {
  2. private $name = '';
  3. private $user = null;
  4. private function __constract($name){/*此处private定义辅助实现 单元素模式*/
  5. $this->name = $name;
  6. }
  7. public static function instance($name){/*此方法实现 工厂模式*/
  8. static $object = null;/*此变量实现 单元素模式*/
  9. if (is_null($object))
  10. $object = new people($name);
  11. return $object;
  12. }
  13. public function work_in($who=null)
  14. {
  15. if (is_null($who)) echo 'error';
  16. else {
  17. $this->user[] = $who;/*此数组变量实现 观察者模式*/
  18. echo $who->work();/*此方法调用实现 策略模式*/
  19. }
  20. }
  21. public function on_action($which=''){
  22. if (empty($which)) echo 'error';
  23. else {
  24. foreach ($this->user as $user)
  25. $user->action($which);/*此方法调用实现 命令链模式*/
  26. }
  27. }
  28. }
  29. $people = people::instance('jack');
  30. $people->work_in(new student);
  31. $people->work_in(new teacher);
  32. $people->on_action('eat');
  33. class student {
  34. function work(){
  35. echo '
    我是学生,朝九晚五。';
  36. }
  37. function action($which){
  38. if (method_exists($this, $which)) return $this->$which();
  39. else echo 'you are wrong!';
  40. }
  41. function eat(){
  42. echo '
    我是学生,只能吃套餐。';
  43. }
  44. }
  45. class teacher {
  46. function work(){
  47. echo '
    我是老师,晚上备课最忙。';
  48. }
  49. function action($which){
  50. if (method_exists($this, $which)) return $this->$which();
  51. else echo 'i can not do it!';
  52. }
  53. function eat(){
  54. echo '
    我是老师,可以每天吃大餐。';
  55. }
  56. }
复制代码


来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板