三个类概括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 相关文章推荐
文件上传程序的全部源码
Oct 09 PHP
PHP几个数学计算的内部函数学习整理
Aug 06 PHP
PHP 解决session死锁的方法
Jun 20 PHP
linux下编译安装memcached服务
Aug 03 PHP
thinkPHP中验证码的简单使用方法
Dec 26 PHP
thinkphp中字符截取函数msubstr()用法分析
Jan 09 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
实现PHP搜索加分页
Oct 12 PHP
php中照片旋转 (orientation) 问题的正确处理
Feb 16 PHP
PHP实现的简单AES加密解密算法实例
May 29 PHP
PHP如何实现订单的延时处理详解
Dec 30 PHP
php+redis实现商城秒杀功能
Nov 19 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
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
PHP概述.
2006/10/09 PHP
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
PHP 学习路线与时间表
2010/02/21 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
JS扩展方法实例分析
2015/04/15 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
echarts整合多个类似option的方法实例
2018/07/10 Javascript
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
Python自动调用IE打开某个网站的方法
2015/06/03 Python
如何基于python生成list的所有的子集
2019/11/11 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
Python基于Twilio及腾讯云实现国际国内短信接口
2020/06/18 Python
Python将list元素转存为CSV文件的实现
2020/11/16 Python
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
在IE6系列等老式浏览器中使用HTML5的新标签实现方案
2012/12/25 HTML / CSS
医院总经理职责
2013/12/26 职场文书
社区志愿者心得体会
2014/01/03 职场文书
高中考试作弊检讨书
2014/01/14 职场文书
实习报告评语
2014/04/26 职场文书
祖国在我心中演讲稿200字
2014/08/28 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
体检通知范文
2015/04/21 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android