Android-工廠方法模式

定義:
在工廠方法模式中,工廠父類負責定義創建產品對象的公共接口,而工廠子類則負責生成具體的產品對象,這樣做的目的是將產品類的實例化操作延遲到工廠子類中完成,即通過工廠子類來確定究竟應該實例化哪一個具體產品類。
爲何使用:
不需要設置一個工廠類實現所有產品的創建,而是把每個產品的實現交給對應的工廠去實現,也不用擔心實例的創建,將創建產品實現的實例與使用的實例分開。一個產品對應一個工廠,需要增加產品的時候就需要新建一個工廠。
缺點:
在添加新產品的時候,需要編寫新的具體產品類,而且還要提供與之對應的具體工廠類,系統中類的個數將成對增加,在一定程度上增加了系統的複雜度,有更多的類需要編譯和運行,會給系統帶來一些額外的開銷。
角色:
Factory(抽象工廠類):此角色是工廠方法的核心,任何工廠類都需要繼承此角色,通常是抽象的,當然也可以不是抽象的。
ConcreteFactory(具體工廠類):此角色受到使用使用者的調用會創建具體產品對象。
Product(抽象產品類):此角色爲具體產品的實現接口,通常是抽象的,當然也可以不是抽象的。
ConcreteProduct(具體產品類):此角色實現抽象產品的接口,具體工廠中創建的對象都是某個具體產品的實例。
舉例使用:
抽象產品類:

public abstract class Product {
    public static String TAG = Product.class.getSimpleName();
    public abstract void make();
}

具體產品類1:

public class Product1 extends Product {
    @Override
    public void make() {
        Log.e(TAG,"工廠方法學習1!");
    }
}

具體產品類2:

public class Product2 extends Product {
    @Override
    public void make() {
        Log.e(TAG, "工廠方法學習2!");
    }
}

抽象工廠類:

public abstract class Factory {
    //創建抽象工廠類
    public abstract Product create();
}

具體工廠類1:

public class Factory1 extends Factory {
    @Override
    public Product create() {
        return new Product1();
    }
}

具體工廠類1:

public class Factory2 extends Factory {
    @Override
    public Product create() {
        return new Product2();
    }
}

使用方法:

Factory1 factory1 = new Factory1();
Product product = factory1.create();
product.make();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章