設計模式之2--工廠方法模式

工廠模式學習筆記

之前我們學習了簡單工廠模式(靜態工廠模式),當具體產品類變多的話,工廠類中就會包含大量的if..else..代碼。其次,當增加新的具體產品類的時候,還需要修改工廠類的業務邏輯,違反了“開閉原則”。爲了解決這個問題,工廠模式應運而生。

在工廠方法模式中,我們不再提供一個專門的工廠類來構建所有的產品對象,而是針對不同的產品類提供不同的工廠,系統提供一個和產品等級結構對應的工廠等級結構。

工廠方法模式定義:

定義一個用於創建對象的接口,讓子類決定將哪一個類實例化。工廠方法模式讓一個類的實例化延遲到其子類。工廠方法模式簡稱爲工廠模式,又可稱爲虛擬構造器模式或者多態工廠模式。工廠模式是一種類創建性模式。

抽象工廠:

interface Factory {
    public Product factoryMethod();
}

具體工廠A:

class ConcreteFactoryA implements Factory {
    public Product factoryMethod() {
        return new ConcreteProductA();
    }
}

具體工廠B:

class ConcreteFactoryB implements Factory {
    public Product factorMethod() {
        return new ConcreteProductB();
    }
}

客戶端調用:

class Client {
    public static void main(String args[]) {
        Factory factory = new ConcreteFactoryA();
        Product product;
        product = factory.factoryMethod();
    }
}

客戶端針對抽象工廠進行編程,在具體運行的時候實例化指定的具體工廠類,然後創建不同的產品。

工廠方法模式總結:
1. 優點
用戶只需要關心所需要的產品對應工廠。在加入新產品時,無須修改抽象工廠和抽象產品提供的接口,只需要添加一個具體工廠和具體產品就可以了。
2. 缺點
增加產品的時候,需要增加具體產品類和對應的具體工廠類,系統中類的個數成對增加。

適用場景:
客戶端不需要知道所需要的對象的類。在工廠方法模式中,具體的產品對象都是由對應的具體的工廠類創建的,客戶端針對抽象工廠編程,只需要抽象工廠提供一個創建產品的接口,運行時根據多態性會自動的創建相應的產品。

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