PHP の 5 つの設計パターンを 3 つのクラスに要約
リリース: 2016-07-25 09:06:46
工場出荷時のパターン
単一要素モード
オブザーバーモード
コマンドチェーンモード
戦略モード
- class people {
- private $name = '';
- private $user = null;
-
- private function __contract($name){/*ここでのプライベート定義は、単一要素モードの実装を支援します*/
- $ this-> ;name = $name;
- }
-
- public static function instance($name){/*このメソッドはファクトリ モードを実装します*/
- static $object = null;/*この変数は単一要素モードを実装します*/
- if (is_null( $object))
- $object = new people($name);
- return $object;
- }
-
- public function work_in($who=null)
- {
- if (is_null($who)) echo 'error ';
- else {
- $this->user[] = $who;/*この配列変数はオブザーバー パターンを実装します*/
- echo $who->work();/*このメソッド呼び出しは戦略パターンを実装します* /
- }
- }
-
- public function on_action($that=''){
- if (empty($that)) echo 'error';
- else {
- foreach ($this->user as $user)
- $ user-> action($that);/*このメソッドはコマンド チェーン モードを実装するために呼び出します*/
- }
- }
- }
-
- $people = people::instance('jack');
- $people-> work_in(新入生);
- $people->work_in(新任教師);
- $people->on_action('eat');
-
- クラスの生徒 {
- function work(){
- echo '
} - function action($this){
- if (method_exists($this, $that)) return $this->$that();
- else echo 'あなたは間違っています!';
- }
-
- function Eat(){
- echo '
私は学生なので定食しか食べられません。 ';
- }
- }
-
- クラスの先生 {
- function work(){
- echo '
私は教師で、夕方はレッスンの準備で一番忙しいです。 ';
- }
-
- function action($that){
- if (method_exists($this, $that)) return $this->$that();
- else echo 'それはできません!';
- }
-
- function Eat(){
- echo '
私は教師なので、毎日たくさんの食事を食べることができます。 ';
- }
- }
コードをコピー
|
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31