PHP设计模式 - 工厂模式

这里写自定义目录标题

简单工厂模式

<?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();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值