<table cellspacing="0" cellpadding="0"><tr><td class="t_f" id="postmessage_23790"> 工厂模式 <br> 单元素模式 <br> 观察者模式 <br> 命令链模式 <br> 策略模式 <div class="blockcode"> <div id="code_lc4"><ol> <li>class people {</li> <li> private $name = '';</li> <li> private $user = null;</li> <li> <li> private function __constract($name){/*此处private定义辅助实现 单元素模式*/</li> <li> $this->name = $name;</li> <li> }</li> <li> <li> public static function instance($name){/*此方法实现 工厂模式*/</li> <li> static $object = null;/*此变量实现 单元素模式*/</li> <li> if (is_null($object))</li> <li> $object = new people($name);</li> <li> return $object;</li> <li> }</li> <li> <li> public function work_in($who=null)</li> <li> {</li> <li> if (is_null($who)) echo 'error';</li> <li> else {</li> <li> $this->user[] = $who;/*此数组变量实现 观察者模式*/</li> <li> echo $who->work();/*此方法调用实现 策略模式*/</li> <li> }</li> <li> }</li> <li> <li> public function on_action($which=''){</li> <li> if (empty($which)) echo 'error';</li> <li> else {</li> <li> foreach ($this->user as $user)</li> <li> $user->action($which);/*此方法调用实现 命令链模式*/</li> <li> }</li> <li> }</li> <li>}</li> <li> <li>$people = people::instance('jack');</li> <li>$people->work_in(new student);</li> <li>$people->work_in(new teacher);</li> <li>$people->on_action('eat');</li> <li> <li>class student {</li> <li> function work(){</li> <li> echo '<br>我是学生,朝九晚五。';</li> <li> }</li> <li> <li> function action($which){</li> <li> if (method_exists($this, $which)) return $this->$which();</li> <li> else echo 'you are wrong!';</li> <li> }</li> <li> <li> function eat(){</li> <li> echo '<br>我是学生,只能吃套餐。';</li> <li> }</li> <li>}</li> <li> <li>class teacher {</li> <li> function work(){</li> <li> echo '<br>我是老师,晚上备课最忙。';</li> <li> }</li> <li> <li> function action($which){</li> <li> if (method_exists($this, $which)) return $this->$which();</li> <li> else echo 'i can not do it!';</li> <li> }</li> <li> <li> function eat(){</li> <li> echo '<br>我是老师,可以每天吃大餐。';</li> <li> }</li> <li>}</li> </ol></div> <em onclick="copycode($('code_lc4'));">复制代码</em> </div> </td></tr></table> <div id="comment_23790" class="cm"> </div> <div id="post_rate_div_23790"></div> <br><br>