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


Posted in PHP onSeptember 05, 2012

工厂模式
单元素模式
观察者模式
命令链模式
策略模式

class people { 
private $name = ''; 
private $user = null; 
private function __constract($name){/*此处private定义辅助实现 单元素模式*/ 
$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($which=''){ 
if (empty($which)) echo 'error'; 
else { 
foreach ($this->user as $user) 
$user->action($which);/*此方法调用实现 命令链模式*/ 
} 
} 
} 
$people = people::instance('jack'); 
$people->work_in(new student); 
$people->work_in(new teacher); 
$people->on_action('eat'); 
class student { 
function work(){ 
echo '<br/>我是学生,朝九晚五。'; 
} 
function action($which){ 
if (method_exists($this, $which)) return $this->$which(); 
else echo 'you are wrong!'; 
} 
function eat(){ 
echo '<br/>我是学生,只能吃套餐。'; 
} 
} 
class teacher { 
function work(){ 
echo '<br/>我是老师,晚上备课最忙。'; 
} 
function action($which){ 
if (method_exists($this, $which)) return $this->$which(); 
else echo 'i can not do it!'; 
} 
function eat(){ 
echo '<br/>我是老师,可以每天吃大餐。'; 
} 
}
PHP 相关文章推荐
PHP三层结构(上) 简单三层结构
Jul 04 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
php数组函数序列之array_intersect() 返回两个或多个数组的交集数组
Nov 10 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
PHP 导出Excel示例分享
Aug 18 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
Oct 17 PHP
php中array_slice和array_splice函数解析
Oct 18 PHP
Laravel学习基础之migrate的使用教程
Oct 11 PHP
PDO::inTransaction讲解
Jan 28 PHP
PHP crypt()函数的用法讲解
Feb 15 PHP
windows 2008r2+php5.6.28环境搭建详细过程
Jun 18 PHP
用来解析.htpasswd文件的PHP类
Sep 05 #PHP
用来解析.htgroup文件的PHP类
Sep 05 #PHP
PHP curl 并发最佳实践代码分享
Sep 05 #PHP
PHP输出数组中重名的元素的几种处理方法
Sep 05 #PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 #PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 #PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 #PHP
You might like
PHP运行时强制显示出错信息的代码
2011/04/20 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
PHP CURL使用详解
2019/03/21 PHP
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
可插入图片的TEXT文本框
2013/12/27 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
[05:09]2016国际邀请赛中国区预选赛淘汰赛首日精彩回顾
2016/06/29 DOTA
Python中正则表达式详解
2017/05/17 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
韩国CJ食品专卖网:CJonmart
2016/09/11 全球购物
俄罗斯最大的消费电子连锁零售商:Mvideo
2017/06/25 全球购物
伦敦剧院门票:From The Box Office
2018/06/30 全球购物
德国圣伯纳德草药屋:Kräuterhaus Sanct Bernhard(有中文站)
2018/08/05 全球购物
社团文化节策划书
2014/02/01 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
电力安全事故反思
2014/04/27 职场文书
团拜会策划方案
2014/06/07 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
离职证明范本
2015/06/12 职场文书
投诉信回复范文
2015/07/03 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏