php教程:php设计模式介绍之工厂模式
日期:2008年6月7日 作者: 查看:[大字体 中字体 小字体]-
《PHP设计模式介绍》第三章 工厂模式
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况, 新对象的建立就是一个 “过程”,不仅是一个操作,像一部大机器中的一个齿轮传动。
问题
你如何能轻松方便地建立这么" 复杂 " 的对象即操作中不需要粘贴复制呢?
解决方法
建立一个工厂(一个函数或一个类方法)来制造新的对象。为了理解工厂的用处, 试想以下的不同之处……
代码:
……使你的代码可扩展和更简洁……
后者的代码片断集中在和数据库连接的create_connect()工厂上 ,就像刚才说的一样,使创造数据库连接的过程成为一个简单的操作—就像new操作一样。工厂模式的优点就在创建对象上。 它的任务就是把对象的创建过程都封装起来,然后返回一个所需要的新类。
想改变对象的结构和建立对象的方式吗? 你只需选择对象工厂,对代码的改变只需要一次就够了。( 工厂模式的功能是如此强大, 它处于是应用的底层, 所以在许多其余的复杂模式和应用中它会不停地出现。)
样本代码
工厂模式封装了对象的建立过程。 你可以在对象本身创建对象工厂或者是一个额外的工厂类——这要看你具体的应用。让我们看一个工厂对象的例子。
我们发现下面代码中,数据库连接的那部分屡次出现:
为什么这样做不好? 数据库连接的参数出现的地方太多了,当你把这些参数设成常量,意味着你统一定义并对他们进行赋值,显然这种做法不是很妥当:
-
你可以轻松地改变连接数据库的参数,但你不能增加或改变这些参数地顺序,除非你把所有连接代码都改了。
-
你不能轻松的实例化一个新类去连接另一种数据库,比如说PostgresqlConnection。
-
这样很难单独测试和证实连接对象的状态。
使用工厂设计模式,代码将得到很大的改进:
先前的类中存在很多调用new MysqlConnection(DB_USER, DB_PW, DB_NAME)的方法,现在都被集中到的_getConnection()方法上。
下面是工厂的另一种变化,你静态地调用了一个工厂类:
这里DbConnectionBroker::getConnection()产生的效果和前面的一样 ,但这样却很有好处: 我们不必在每个需要连接数据库的类中加入调用new MysqlConnection(DB_USER , DB_PW, DB_NAME)的方法。
当然另一种变化就是引用一个外部工厂对象的资源,和这个对象定义了数据库连接的参数:
class Product {
- [1] [2] [3] [4] [5] [6] 下一页
- php教程:php设计模式介绍之工厂模式 相关文章:
- ·最新周杰伦FD模块_QQ4.0空间
- ·QQ空间篮球大图模块:科比系列【1】
- ·超酷东方神起FLASH模板_QQ空间
- ·QQ空间大图模块:浅蓝色
- ·简历模板【范文】:(21)网络维护工程师
- ·QQ空间大图模块:星空下摩天轮
- ·QQ空间模块:中秋爱情贺卡-陪你到老
- ·非主流QQFlash模块和动态横幅
- ·QQ空间绿色大图模块:忧郁少女
- ·3Dmax教程:3D大型坦克建模教程
- php教程:php设计模式介绍之工厂模式 相关软件
- ·街机麻将电子基盘PC模拟版
- ·模拟火车2004 (Trainz Railroad Simulator 2004)硬盘版
- ·NES模拟器小游戏
- ·珍藏84合1模拟器+84款经典游戏
- ·GBA中文模拟器 300经典游戏整合版
- ·部分经典fc类游戏合集(含模拟器)
- ·模拟人生之嫁个有钱人
- ·模拟城市3000简体中文版
- ·X模拟飞行
- ·微软模拟火车
上一篇:滚动字幕制作及与音乐同步技巧
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·MySQL数据库基础教程
- ·JSTL 入门:表达式语言
- ·一个Struts实现分页,增删改查,Tiles,国际化的DEMO
- ·Swt常用控件中文教程
- ·简单的webservice开发例子
- ·如何在本地安装调试运行PHP程序?
- ·ajax+php无刷新二级联动下拉菜单(省市联动)源码
- ·用JFreeChart画统计分析柱状图
- ·PHP和Socket
- ·PHP程序员都应该会用的五个工具
- ·动态网页制作技巧PHP:详细彻底学习Smarty
- ·如何设置Tomcat的JVM虚拟机内存大小
- ·JDK5.0的11个主要新特征
- ·用PHP发送有附件的电子邮件
- ·自己写的一个PHP上传类
- ·PHP的类--功能齐全的发送邮件类
- ·PHP PEAR简介
- ·PHP Smarty程序应用范例
- ·一棵php的类树(支持无限分类)
- ·最纯净的Apache2/PHP5/Mysql5 for WinXP配置法
特别推荐
- ·如何在本地安装调试运行PHP程序?
- ·PHP面向对象分析设计的61条军规
- ·php教程:php设计模式介绍之伪对象模式
- ·php教程:php设计模式介绍之工厂模式
- ·php入门交流:鼓励学习PHP的新手
- ·PHP程序员都应该会用的五个工具
- ·文件上传类
- ·PHP的类--功能齐全的发送邮件类
- ·用PHP编写PDF文档生成器
- ·php生成EXCEL的东东
- ·PHP编程与应用
- ·PHP网上调查系统
- ·一个多文件上传的例子(原创)
- ·用IE远程创建Mysql数据库的简易程序
- ·一次编写,随处运行
- ·JSP单页面网站文件管理器
- ·Apache2的httpd.conf翻译
- ·使用PHP的Socket写的POP3类
- ·一棵php的类树(支持无限分类)
- ·PHP实现简单线性回归之数学库的重要性
-
