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();
	}
}
    原文作者:这个胖子有点瘦
    原文地址: https://blog.csdn.net/thinkeydeng/article/details/86677397
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞