Heim >Backend-Entwicklung >PHP-Tutorial >三个类概括PHP的五种设计模式

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

WBOY
WBOYOriginal
2016-07-25 09:06:46747Durchsuche
工厂模式
单元素模式
观察者模式
命令链模式
策略模式
  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. }
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn