PHP最常用的2种设计模式工厂模式和单例模式介绍


Posted in PHP onAugust 14, 2012

1.工厂模式
主要作用是降低耦合度。

abstract class Operation{ 
abstract public function getValue($num1,$num2); 
public function getAttr(){ 
return 1; 
} 
} 
class Add extends Operation{ 
public function getValue($num1, $num2){ 
return $num1+$num2; 
} 
} 
class Sub extends Operation{ 
public function getValue($num1, $num2){ 
return $num1-$num2; 
} 
} 
class Factory{ 
public static function CreateObj($operation){ 
switch ($operation){ 
case '+': return new Add(); 
case '-': return new Sub(); 
} 
} 
} 
$Op=Factory::CreateObj('-'); 
echo $Op->getValue(3, 6);

用在真正开发中一般当做数据库选择类。
2单例模式
单例是因为一个就足够了,多了浪费。比如邮局里的电话簿只有一本,有需要的人拿来看,没有必要每个人要查的时候工作人员就拿一本出来,看完了再回收。
class Mysql{ 
public static $conn; 
public static function getInstance(){ 
if (!self::$conn){ 
new self(); 
return self::$conn; 
}else { 
return self::$conn; 
} 
} 
private function __construct(){ 
self::$conn= "mysql_connect:";// mysql_connect('','','') 
} 
public function __clone() 
{ 
trigger_error("Only one connection"); 
} 
} 
echo Mysql::getInstance(); 
echo Mysql::getInstance();

实际中用作数据库连接类和工厂模式一起使用,根据参数调用单例模式,可以提高资源使用效率。
PHP 相关文章推荐
php时间不正确的解决方法
Apr 09 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
May 28 PHP
php file_exists 检查文件或目录是否存在的函数
May 10 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
Apr 23 PHP
解析php中获取url与物理路径的总结
Jun 21 PHP
php检测apache mod_rewrite模块是否安装的方法
Mar 14 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
Apr 01 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
May 19 PHP
PHP实现上传多文件示例代码
Feb 20 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 PHP
laravel框架语言包拓展实现方法分析
Nov 22 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
May 27 PHP
php调用dll的实例操作动画与代码分享
Aug 14 #PHP
php中计算未知长度的字符串哪个字符出现的次数最多的代码
Aug 14 #PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 #PHP
通过5个php实例细致说明传值与传引用的区别
Aug 08 #PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
Aug 08 #PHP
php中++i 与 i++ 的区别
Aug 08 #PHP
php中判断文件空目录是否有读写权限的函数代码
Aug 07 #PHP
You might like
基于PHP中的常用函数回顾
2013/07/11 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
PHP远程采集图片详细教程
2014/07/01 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
js Html结构转字符串形式显示代码
2011/11/15 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
[15:35]教你分分钟做大人:天怒法师
2014/10/30 DOTA
python求众数问题实例
2014/09/26 Python
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
python计算auc指标实例
2017/07/13 Python
Python文件和流(实例讲解)
2017/09/12 Python
python Opencv将图片转为字符画
2021/02/19 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
Python后台开发Django会话控制的实现
2019/04/15 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
Python ATM功能实现代码实例
2020/03/19 Python
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
初中政治教学反思
2014/01/17 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
单身证明格式样本
2015/06/15 职场文书
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python