php的工厂模式
2024-09-18 23:39:22
特点 :将调用者和创建者分离,调用者直接向工厂类请求获取调用对象,减少代码耦合,提高系统的维护性和扩展性。
<?php
// **** 共同接口 **** //
interface DB {
function conn();
} interface factory {
function createDB();
} // **** 服务端开发 **** //
class dbMysql implements DB {
public function conn() {
echo '连接上了 mysql 数据库!';
}
} class mysqlFactory implements factory {
public function createDB() {
return new dbMysql();
}
} class dbSqlite implements DB {
public function conn() {
echo '连接上了 sqlite 数据库!';
}
} class sqliteFactory implements factory {
public function createDB() {
return new dbSqlite();
}
} // 这是开发中后来增加的 oracle 数据库;
// 不需要修改上面原来的代码;
// 这就是程序的开闭原则:修改关闭,增加开放。
class dbOracle implements DB {
public function conn() {
echo '连接上了 oracle 数据库!';
}
} class oracleFactory implements factory {
public function createDB() {
return new dbOracle();
}
} // **** 客户端调用 **** //
$factory = new mysqlFactory();
$db = $factory->createDB();
$db->conn(); echo '<br>'; $factory = new sqliteFactory();
$db = $factory->createDB();
$db->conn(); echo '<br>';
// 这是开发中后来增加的 oracle 数据库连接
$factory = new oracleFactory();
$db = $factory->createDB();
$db->conn();
最新文章
- [转]passport.js学习笔记
- 关于最少VC号数目的猜想
- Effective Java阅读笔记——引言
- Backbone Collection——数据模型集合
- RabbitMQ介绍2 - AMQP协议
- NGUI的UIProgressBar使用裁剪方式而不是压缩方式的方法
- Python手动构造Cookie模拟登录后获取网站页面内容
- Poj Roadblocks(次短路)
- iOS常用宏定义
- 保证Android后台不被杀死的几种方法
- struts2上传文件类型列表
- Python 中的登陆获取数据跳转页面(不含数据库)
- rhel7 启动网络
- java ReentrantLock结合条件队列 实现生产者-消费者模式 以及ReentratLock和Synchronized对比
- Shell编程(week4_day2)--技术流ken
- linux对4T硬盘进行分区
- sql server Local Service, Local System or Network Service
- Project Euler 54
- Hexo站点之域名配置【2】
- Java 中 Emoji 的正则表达式