工厂模式还有一个简单工厂,简单工厂的耦合性高,且不符合开闭原则。
<?php
/*
* 设计模式之
* 工厂模式
* 开闭原则
* 工厂创建的解耦
*/
/* 设置一个db接口=>主要用于连接数据库 */
interface db
{
public function conn();
}
/* 设置一个工厂接口=>用于创建数据库 */
interface Factory
{
public 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();
}
}
/* ======客户端调用====== */
/* 创建数据库,连接数据库 */
$fac = new mysqlFactory();
$db = $fac->createDB();
$db->conn();
/* == */
$fac = new sqliteFactory();
$db = $fac->createDB();
$db->conn();
/* ==突然,新增了一个数据库== */
/* 因为解耦解的好 */
/* so */
/* 先创建数据库连接 */
class dboracle implements db
{
public function conn()
{
echo '连接oracle';
}
}
/* 工厂开始生产 */
class oracleFactory implements Factory
{
public function createDB()
{
return new dboracle();
}
}
/* ===客户端== */
$fac = new oracleFactory();
$db = $fac->createDB();
$db->conn();