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