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 高手之路(二)
Oct 09 PHP
推荐php模板技术[转]
Jan 04 PHP
PHP simple_html_dom.php+正则 采集文章代码
Dec 24 PHP
php实现简单洗牌算法
Jun 18 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
Jul 25 PHP
php树型类实例
Dec 05 PHP
PHP实现判断数组是一维、二维或几维的方法
Feb 06 PHP
php二维码生成以及下载实现
Sep 28 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
PHP共享内存使用与信号控制实例分析
May 09 PHP
PHP面向对象程序设计继承用法简单示例
Dec 28 PHP
Laravel框架控制器的middleware中间件用法分析
Sep 30 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
福利彩票幸运号码自动生成器
2006/10/09 PHP
PHP开发中四种查询返回结果分析
2011/01/02 PHP
php伪静态之APACHE篇
2014/06/02 PHP
php中mt_rand()随机数函数用法
2014/11/24 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
javascript import css实例代码
2008/07/18 Javascript
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
vuejs实现折叠面板展开收缩动画效果
2018/09/06 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
微信小程序 wx.getUserInfo引导用户授权问题实例分析
2020/03/09 Javascript
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
全面了解python字符串和字典
2016/07/07 Python
Python随机函数random()使用方法小结
2018/04/29 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
使用python爬取抖音视频列表信息
2019/07/15 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
解决python3 requests headers参数不能有中文的问题
2019/08/21 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
程序员机试试题汇总
2012/03/07 面试题
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
毕业生求职找工作的自我评价范文
2013/11/27 职场文书
中秋寄语大全
2014/04/11 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
班主任工作总结范文
2015/08/13 职场文书