简单工厂模式:与工厂方法比较,无法适应同种产品的增加,每增加一个产品都需要在工厂中增加一个产品的方法分支,这样的工厂不仅不封闭也让我们工作量增加,不能实现我们的‘懒’,能让程序做的事情,自己就不会再做。
工厂方法模式:与简单工厂模式相比较,拥有更加灵活的可以灵活增加新的产品,但是无法再深层次的增加产品的类型,只能在同层次的增加。
抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口。与工厂方法相比更容易扩展产品的类型。
工厂模式:适用于生成数量多,功能复杂的产品。
与简单工厂相比:业务更复杂,功能更多,但是产品族还是单个。
引用 https://blog.csdn.net/gurenshen/article/details/53997373
系统对接多个不同类型的数据库,mysql,oracle,sqlserver
<?php
//共同接口
interface db{
public function conn();
}
/**
*@class 服务端开发(不知道谁将会被调用)
*
*/
class dbmysql implements db{
public function conn() {
echo '连接上了Mysql';
}
}
class dbsqlite implements db{
public function conn() {
echo '连接上了sqlite';
}
}/**
*@定义一个工厂接口
*/
interface Factory{
public function createDB();
}
/**
*@实现这个接口
*/
class mysqlFactory implements Factory{
public function createDB() {
return new dbmysql();
}
}
class sqliteFactory implements Factory{
public function createDB() {
return new dbsqlite();
}
}
/**
*@新增一个oracle
*/
class oracleFactory implements Factory{
public function createDB() {
return new oracle();
}
}
class oracleDb implements db{
public function conn() {
echo '连接上了oracle';
}
}//客户端调用
$fact = new mysqlFactory();//使用一个mysql工厂造一个mysql连接
$db = $fact->createDB();
$db->conn();
$fact = new sqliteFactory();
$db = $fact->createDB();
$db->conn();
$fact = new oracleFactory();
$db = $fact->createDB();
$db->conn();