Java設計模式之《抽象工廠模式》詳解 實現抽象工廠及應用場景

抽象工廠模式(Abstract Factory)

       抽象出來一個基礎接口定義了產品功能(對應抽象產品角色),每個實現此接口的子類就是具體產品(對應具體產品角色),然後定義一個工廠接口(對應抽象工廠角色),實現了工廠接口的子類就是具體工廠(對應具體工廠角色),這時候,接口編程的優點就體現了,我們可以隨時新增具體產品類(只需要實現產品接口),只需要同時新增一個工廠類,客戶端就可以輕鬆調用生成新產品的代碼。

  抽象工廠模式的靈活性就體現在這裏,無需改動原有的代碼,畢竟對於客戶端來說,靜態工廠模式在不改動StaticFactory類的代碼時無法新增產品,如果採用了抽象工廠模式,就可以輕鬆的新增拓展類。

抽象工廠模式的用意爲:給客戶端提供一個統一接口,可以創建多個複雜產品族中的產品對象

抽象工廠角色: 這是抽象工廠模式的核心,它與應用程序無關。是具體工廠角色必須實現的接口或者必須繼承的父類。在java中它由抽象類或者接口來實現。
具體工廠角色:它含有和具體業務邏輯有關的代碼。由應用程序調用以創建對應的具體產品的對象。它由具體的類來實現。
抽象產品角色:它是具體產品繼承的父類或者是實現的接口。在java中一般由抽象類或者接口來實現。
具體產品角色:具體工廠角色所創建的對象就是此角色的實例。在java中由具體的類來實現

interface food { }

class A implements food{}
class B implements food{}

interface AbstractFactory { Food produceFood();}

class FactoryA implements AbstractFactory {
    @Override
    public Food produceFood() {
        return new A();
    }
}

class FactoryB implements AbstractFactory {
    @Override
    public Food produceFood() {
        return new B();
    }
}

 客戶端調用

public class Client{
    public Food getFood(String name){
        Food x= new FactoryA().produceFood();
        return x;
    }
}

 

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