對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;
    }
}

但是,對於爲什麼有要有工廠模式,抽象工廠模式有什麼用?,我還不清楚

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