初始設計模式4——抽象工廠模式

抽象工廠模式(Abstract Factory Pattern)

爲創建一組相關或相互依賴的對象提供一個接口,並且無需指定它們的具體類。

抽象工廠模式是工廠方法模式的升級版本,在有多個業務品種,業務分類時,通過抽象工廠模式產生需要的對象是一種非常好的解決辦法。

假設一家汽車工廠生產兩種車型,A和B,工廠有兩條工藝線,分別生產發動機和車燈,代碼如下:

<pre name="code" class="java">public abstract class AbstractProductA{//車型A
        public abstract void method();//生產
}
    //A車型發動機實現類
    public class ProductA1 extends AbstractProductA{
        public void method(){}
    }
    //A車型車燈實現類
    public class ProductA2 extends AbstractProductA{
        public void method(){}
    }
    //車型B
    public abstract class AbstractProductB{
        public abstract void method();
    }
    //B車型發動機實現類
    public class ProductB1 extends AbstractProductB{
        public void method(){}
    }
    //B車型車燈實現類
    public class ProductB2 extends AbstractProductB{
        public void method(){}
    }
    //抽象工廠類
    public abstract class AbstractFactory{
        public abstract AbstractProductA createProductA();
        public abstract AbstractProductB createProductB();
    }
    //發動機生產線
    public class Factory1 extends AbstractFactory{
        public AbstractProductA createProductA(){
            return new ProductA1();
        }
        public AbstractProductB createProductB(){
            return new ProductB1();
        }
    }
    //車燈生產線
    public class Factory2 extends AbstractFactory{
        public AbstractProductA createProductA(){
            return new ProductA2();
        }
        public AbstractProductB createProductB(){
            return new ProductB2();
        }
    }

抽象工廠模式使得每個產品的實現類與高層模塊解耦,具有良好封裝性。

不過抽象工廠模式擴展產品族極其困難,比如上述環境如果需要生產新的車型C,則需要修改極多代碼,違反開閉原則。不過產品等級擴展容易,比如如果需要生產車的新的部件,則只需增加相關實現類即可。

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