PHP设计模式 - 工厂模式
程序员文章站
2024-01-21 20:49:40
...
简单工厂模式
<?php
//共同接口
interface db{
function conn();
}
//服务器开发(不知道将会被谁调用)
clase dbmysql implements db{
public function conn(){
echo "连上了Mysql";
}
}
clase dbsqlite implements db{
public function conn(){
echo "连上了sqlite";
}
}
class Factory
{
public static function createDB($type){
if($type=='mysql'){
}else if($type=='sqlite'){
return new dbsqliteI();
}else{
throw new Exception('Error db type',1);
}
}
}
$mysql = Factory::createDB('mysql');
$mysql->conn();
$mysql = Factory::createDB('sqlite');
$mysql->conn();
>
工厂方法
如果新增oracle类型?
服务器要修改Factory的内容(java和c++改后还得再编译)
再面向对象设计法则中,重要的法则:【开闭原则】
interface db{
function conn();
}
interface Factory{
function createDB();
}
//服务器开发(不知道将会被谁调用)
class dbmysql implements db{
public function conn(){
echo "连上了Mysql";
}
}
class dbsqlite implements db{
public function conn(){
echo "连上了sqlite";
}
}
class mysqlFactory implements Factory{
public function createDB(){
return new dbmysql();
}
}
class sqliteFactory implements Factory{
public function createDB(){
return new dbsqlite();
}
}
//=======客户端开始=====
$fact = new mysqlFactory();
$db = $fact->createDB();
$db->conn();
//=================================================
//........ 服务器端可以继续添加oracle类.....等等
//前面的代码不用改 继续添加需要的驱动类
class dboracle implements db {
public function conn(){
echo "连接上了oracle";
}
}
class oracleFactory implements Factory{
public function createDB(){
return new dboracle();
}
}