>백엔드 개발 >PHP 튜토리얼 >세 가지 클래스는 PHP의 다섯 가지 디자인 패턴을 요약합니다.

세 가지 클래스는 PHP의 다섯 가지 디자인 패턴을 요약합니다.

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


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.