Yii2設計模式——簡單工廠模式

米粒人生發表於2018-12-24

除了使用 new 操作符之外,還有更多的製造物件的方法。你將瞭解到例項化這個活動不應該總是公開進行,也會認識到初始化經常造成“耦合”問題。

應用舉例

yiidbmysqlSchema中:

//建立 QueryBuilder 例項
public function createQueryBuilder()
{
    return new QueryBuilder($this->db);
}

這裡使用了簡單工廠模式。

簡單工廠

簡單工廠(Simply Factory)可以作為 new 關鍵詞的一種簡單代替。簡單工廠其實不是一個設計模式,反而比較像是一種變成習慣。由於經常被使用,所以很多人依然把它稱為“模式”。很多人確實把這個變成習慣誤認為是“工廠模式”。但是,不能認為簡單工廠不是一個真正的“模式”,就忽略它的用法。

程式碼實現

//簡單工廠
class SimpleFactory
{
    public function createBicycle(): Bicycle
    {
        return new Bicycle();
    }
}

//所要建立的物件
class Bicycle
{
    public function driveTo(string $destination)
    {
    }
}

//使用
$bicycle = (new SimpleFactory())->createBicycle();

SimpleFactory 還可以擁有別的方法,每個方法還可以擁有引數,以建立不同的物件。

簡單工廠封裝建立物件的程式碼,有了 SimpleFactory 之後,如果我們需要 Bicycle 例項,就讓 SimpleFactory 去給我建立一個,而不必自己再 new 一個。在需要多個物件的場合,使用一個工廠確實比一大堆 new 操作具有優越性。

Yii2中的簡單工廠

簡單工廠作為一種變成“習慣”,Yii2中有大量的應用,因為識別簡單、用法簡單,這裡就不再多舉例了。

相關文章