PHP设计模式之一:工厂模式(2)

简单工厂模式:与工厂方法比较,无法适应同种产品的增加,每增加一个产品都需要在工厂中增加一个产品的方法分支,这样的工厂不仅不封闭也让我们工作量增加,不能实现我们的‘懒’,能让程序做的事情,自己就不会再做。

工厂方法模式:与简单工厂模式相比较,拥有更加灵活的可以灵活增加新的产品,但是无法再深层次的增加产品的类型,只能在同层次的增加。

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口。与工厂方法相比更容易扩展产品的类型。

 

工厂模式:适用于生成数量多,功能复杂的产品。

与简单工厂相比:业务更复杂,功能更多,但是产品族还是单个。


引用 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();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章