PHP の 5 つの設計パターンを 3 つのクラスに要約

WBOY
リリース: 2016-07-25 09:06:46
オリジナル
707 人が閲覧しました
工場出荷時のパターン
単一要素モード
オブザーバーモード
コマンドチェーンモード
戦略モード
  1. class people {
  2. private $name = '';
  3. private $user = null;
  4. private function __contract($name){/*ここでのプライベート定義は、単一要素モードの実装を支援します*/
  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($that=''){
  22. if (empty($that)) echo 'error';
  23. else {
  24. foreach ($this->user as $user)
  25. $ user-> action($that);/*このメソッドはコマンド チェーン モードを実装するために呼び出します*/
  26. }
  27. }
  28. }
  29. $people = people::instance('jack');
  30. $people-> work_in(新入生);
  31. $people->work_in(新任教師);
  32. $people->on_action('eat');
  33. クラスの生徒 {
  34. function work(){
  35. echo '
    }
  36. function action($this){
  37. if (method_exists($this, $that)) return $this->$that();
  38. else echo 'あなたは間違っています!';
  39. }
  40. function Eat(){
  41. echo '
    私は学生なので定食しか食べられません。 ';
  42. }
  43. }
  44. クラスの先生 {
  45. function work(){
  46. echo '
    私は教師で、夕方はレッスンの準備で一番忙しいです。 ';
  47. }
  48. function action($that){
  49. if (method_exists($this, $that)) return $this->$that();
  50. else echo 'それはできません!';
  51. }
  52. function Eat(){
  53. echo '
    私は教師なので、毎日たくさんの食事を食べることができます。 ';
  54. }
  55. }
コードをコピー


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!