<?php

/**
* 工厂模式
* 提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类的步骤。
*
* 工厂类用于创建不同类的实例,并将其返回。
*/ /**
* 服务端开始
*/
interface DB{
function conn();
}
interface Factory{
function createDB();
}
//
class MysqlDB implements DB{
public function conn() {
echo '连接上Mysql...';
}
}
//
class SqliteDB implements DB{
public function conn() {
echo '连接上Sqlite...';
}
}
//
class MysqlFactory implements Factory{
public function createDB() {
return new MysqlDB();
}
}
//
class SqliteFactory implements Factory{
public function createDB() {
return new SqliteDB();
}
}
/**
* 客户端开始
*/
//连接Mysql
$fact = new MysqlFactory();
$db = $fact->createDB();
$db->conn();
echo '<br/>';
//连接Sqlite
$fact = new SqliteFactory();
$db = $fact->createDB();
$db->conn();
echo '<br/>';
/**
* 扩展:添加Oracle连接
*/
class OracleDB implements Db{
function conn() {
echo '连接上Oracle....';
}
}
class OracleFactory implements Factory{
public function createDB() {
return new OracleDB();
}
}
//连接Oracle
$fact = new OracleFactory();
$db = $fact->createDB();
$db->conn();
echo '<br/>';

最新文章

  1. 我的Python学习之路 Python的初识与准备工作
  2. ORACLE手工删除数据库
  3. Mybatis学习--Mapper.xml映射文件
  4. git学习教程
  5. javaweb学习总结(二十七)——jsp简单标签开发案例和打包
  6. Halcon 映射校正例程注释(MapImage)
  7. 测试C#代码执行时间
  8. DOS批处理命令-@命令
  9. 整理js继承
  10. mybatis插入List集合数据
  11. KVM+Qemu+Libvirt实战
  12. 从头编写 asp.net core 2.0 web api 基础框架 (2)
  13. SHA1 安全哈希算法(Secure Hash Algorithm)
  14. 移动端H5制作安卓和IOS的坑 持续更新...
  15. angular ,require.js, angular-async-loader实现单页面路由,控制器js文件分离
  16. nvidia-smi命令输出详解
  17. [转]Angular——提示框
  18. PARSEC安环境配置、运行
  19. MySQL笔记(2)---InnoDB存储引擎
  20. 破解VS

热门文章

  1. BNU 20950 ——沉重的货物 —————— &#183; 最短路、最短边最大化」
  2. FZU 2214 ——Knapsack problem——————【01背包的超大背包】
  3. socket 客户端和服务端通信
  4. File 类 的基本操作
  5. 关于EF更新数据库,更新指定字段的设置
  6. DJango小总结一
  7. (三)css之浮动&amp;定位
  8. js 匹配中文字符串(也包含日文和韩文)
  9. 避免console错误,console兼容
  10. Java 重写hashCode() 时为什么要用 31 来计算