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

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