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

WBOY
Libérer: 2016-07-25 09:06:46
original
708 Les gens l'ont consulté
工厂模式
单元素模式
观察者模式
命令链模式
策略模式
  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. }
复制代码


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!