php设计模式 Factory(工厂模式)


Posted in PHP onJune 26, 2011
<?php 
/** 
* 工厂方法模式 
* 
* 定义一个用于创建对象的接口,让子类决定将哪一个类实例化,使用一个类的实例化延迟到其子类 
*/ /* 
class DBFactory 
{ 
public static function create($type) 
{ 
swtich($type) 
{ 
case "Mysql": 
return new MysqlDB(); break; 
case "Postgre": 
return new PostgreDB(); break; 
case "Mssql": 
return new MssqlDB(); break; 
} 
} 
} 
*/ 
class DBFactory 
{ 
public static function create($type) 
{ 
$class = $type."DB"; 
return new $class; 
} 
} 
interface DB 
{ 
public function connect(); 
public function exec(); 
} 
class MysqlDB implements DB 
{ 
public function __construct() { 
echo "mysql db<br/>"; 
} 
public function connect() { 
} 
public function exec() { 
} 
} 
class PostgreDB implements DB 
{ 
public function __construct() { 
echo "Postgre db<br/>"; 
} 
public function connect() { 
} 
public function exec() { 
} 
} 
class MssqlDB implements DB 
{ 
public function __construct() { 
echo "mssql db<br/>"; 
} 
public function connect() { 
} 
public function exec() { 
} 
} 
$oMysql = DBFactory::create("Mysql"); 
$oPostgre = DBFactory::create("Postgre"); 
$oMssql = DBFactory::create("Mssql");
PHP 相关文章推荐
PHP服务器页面间跳转实现方法
Aug 02 PHP
PHP判断图片格式的七种方法小结
Jun 03 PHP
基于PHP文件操作的详解
Jun 05 PHP
php中利用explode函数分割字符串到数组
Feb 08 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
Apr 08 PHP
php广告加载类用法实例
Sep 23 PHP
隐性调用php程序的方法
Jun 13 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
Mar 17 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
Sep 29 PHP
PHP实现的策略模式示例
Mar 20 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 PHP
php设计模式 Interpreter(解释器模式)
Jun 26 #PHP
php设计模式 Strategy(策略模式)
Jun 26 #PHP
php设计模式 Observer(观察者模式)
Jun 26 #PHP
php设计模式 Singleton(单例模式)
Jun 26 #PHP
php设计模式 Command(命令模式)
Jun 26 #PHP
php设计模式 Template (模板模式)
Jun 26 #PHP
php设计模式 Proxy (代理模式)
Jun 26 #PHP
You might like
PHP三元运算的2种写法代码实例
2014/05/12 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
php数据序列化测试实例详解
2017/08/12 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
Mootools 1.2教程 Tooltips
2009/09/15 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
2013/06/02 Javascript
JavaScript获取onclick、onchange等事件值的代码
2013/07/22 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
jQuery实现为控件添加水印文字效果(附源码)
2015/12/02 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
vuex实现的简单购物车功能示例
2019/02/13 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
Python 创建子进程模块subprocess详解
2015/04/08 Python
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
Django中使用Whoosh进行全文检索的方法
2019/03/31 Python
Django框架创建mysql连接与使用示例
2019/07/29 Python
python生成requirements.txt的两种方法
2019/09/18 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
python字符串的index和find的区别详解
2020/06/20 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
Unix如何在一行中运行多个命令
2015/05/29 面试题
高三毕业寄语
2014/04/10 职场文书
我爱我家教学反思
2014/05/01 职场文书
横幅标语大全
2014/06/17 职场文书
物理教育专业求职信
2014/06/25 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
小学六一主持词开场白
2015/05/28 职场文书
nginx实现动静分离的方法示例
2021/11/07 Servers