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的ajax框架xajax入门与试用介绍
Dec 19 PHP
php重定向的三种方法分享
Feb 22 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
深入密码加salt原理的分析
Jun 06 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
解析php多线程下载远程多个文件
Jun 25 PHP
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
Mar 21 PHP
PHP简单判断字符串是否包含另一个字符串的方法
Mar 25 PHP
php支付宝APP支付功能
Jul 29 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去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
php笔记之:php数组相关函数的使用
2013/04/26 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
微信小程序五星评分效果实现代码
2017/04/06 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
JavaScript 异步调用
2017/10/25 Javascript
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
javascript中数组的常用算法深入分析
2019/03/12 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
Python的Django框架中的数据过滤功能
2015/07/17 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)
2018/07/12 HTML / CSS
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
个人自我鉴定范文
2013/10/04 职场文书
网游商务专员求职信
2013/10/15 职场文书
大学生职业生涯规划范文
2013/12/31 职场文书
产品生产计划书
2014/05/07 职场文书
2014年建筑工程工作总结
2014/12/03 职场文书
安娜卡列尼娜观后感
2015/06/11 职场文书
公司酒会主持词
2015/07/02 职场文书
初中班长竞选稿
2015/11/20 职场文书
MySQL派生表联表查询实战过程
2022/03/20 MySQL