設計模式之抽象工廠模式

  1. 爲什麼使用抽象工廠模式
    工廠方法模式一文中,我們看到,儘管可以通過工廠方法獲取所需要的類型的產品對象,但是如果類型增加了,則需要在生成對象的方法中增加邏輯判斷的分支,這很明顯違背的開閉原則
  2. 抽象工廠模式
    爲了不對原有的代碼進行修改,又能夠在新增產品類型的時候,可以採用工廠方法獲得產品,於是我們對工廠類也作一次抽象,做一個抽象工廠類,所有的具體工廠都需要繼承自這個抽象工廠類。

  3. 代碼示例
    承接工廠方法模式一文的設計
    做如下改動:
    接口:Product
    抽象類:AbstractFactory
    類:ProductA、ProductB、FactoryA、FactoryB

/**
 * 抽象的工廠類接口,所有具體工廠都需要實現這個接口
 * @author yjzhou
 *
 */
public interface AbstractFactory {
    public Product getProduct();
}
 * A類產品的工廠,只產生A類產品
 * @author Lenovo
 *
 */
public class FactoryA implements AbstractFactory {

    @Override
    public Product getProduct() {
        return new ProductA("你好,我是A類產品!");
    }

}
/**
 * B類產品的工廠,只生產B類產品
 * @author yjzhou
 *
 */
public class FactoryB implements AbstractFactory {

    @Override
    public Product getProduct() {
        return new ProductB("你好,我是B類產品");
    }

}
/**
 * 抽象工廠測試類
 * @author yjzhou
 *
 */
public class FactoryTest {

    public static void main(String[] args) {
        //獲取A類產品的工廠
        AbstractFactory factory = new FactoryA();
        //獲取A類產品
        Product product = factory.getProduct();
        //輸出產品信息
        product.printName();
    }

}

以上的設計,如果增加產品類C,ProductC,相應的再增加FactoryC,FactoryC繼承AbstractFatory類即可以實現程序的擴展,體現了開閉原則的內涵。

發佈了28 篇原創文章 · 獲贊 1 · 訪問量 8884
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章