欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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();
	}
}