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 相关文章推荐
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
Aug 07 PHP
一步一步学习PHP(4) php 函数 补充2
Feb 15 PHP
PHP中怎样防止SQL注入分析
Oct 23 PHP
php中base_convert()进制数字转换函数实例
Nov 20 PHP
PHP常用设计模式之委托设计模式
Feb 13 PHP
PHP session 会话处理函数
Jun 06 PHP
PHP array_shift()用法实例分析
Jan 07 PHP
PHP写API输出的时用echo的原因详解
Apr 28 PHP
详解php中生成标准uuid(guid)的方法
Apr 28 PHP
PHP goto语句用法实例
Aug 06 PHP
tp5.1 框架join方法用法实例分析
May 26 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 神盾解密工具
2014/06/08 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
详解升级react-router 4 踩坑指南
2017/08/14 Javascript
swiper自定义分页器使用方法详解
2020/09/14 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
Vue插件之滑动验证码
2019/09/21 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
[00:55]深扒TI7聊天轮盘语音出处3
2017/05/11 DOTA
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
从源码解析Python的Flask框架中request对象的用法
2016/06/02 Python
python去除扩展名的实例讲解
2018/04/23 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
python统计字母、空格、数字等字符个数的实例
2018/06/29 Python
使用Flask集成bootstrap的方法
2018/07/24 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
自我鉴定的范文
2013/10/03 职场文书
商场中秋节广播稿
2014/01/17 职场文书
七年级生物教学反思
2014/01/30 职场文书
成人继续教育实施方案
2014/03/01 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
授权委托书(法人单位用)
2014/09/29 职场文书
《小小的船》教学反思
2016/02/18 职场文书
2016年庆祝六一儿童节活动总结
2016/04/06 职场文书
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
golang 实用库gotable的具体使用
2021/07/01 Golang
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
《群青的幻想曲》京力秋树角色PV公开
2022/04/08 日漫