目錄
一、什麼是抽象工廠模式
二、模式中包含的角色及其職責
三、抽象工廠模式的優缺點
抽象工廠模式是所有形態的工廠模式中最為抽象和最具一般性的。抽象工廠模式可以向客戶端提供乙個介面,使得客戶端在不必指定產品的具體型別的情況下,能夠建立多個產品族的產品物件。
抽象工廠(factory)角色:抽象工廠模式的核心,包含對多個產品等級結構的宣告,任何工廠類都必須實現這個介面。
具體工廠(concretefactory)角色:具體工廠類是抽象工廠的乙個實現,負責例項化某個產品族中的產品物件。
抽象(product)角色:抽象模式所建立的所有物件的父類,或宣告所有具體產品所共有的公共介面。
具體產品(concreteproduct)角色:抽象工廠模式所建立的真正例項。
總結:抽象工廠中的方法對應產品等級結構,具體工廠對應產品族。
接下來用**進行說明:保留之前工廠方法模式中的fruit介面,用來負責描述所有水果例項應該共有的方法。
public inte***ce fruit
/*
* 採集
*/public abstract void get();
}
public abstract class banana implements fruit
public void get() }
public void get() }
香蕉(banana)被具體化為北方香蕉(northbanana)和南方香蕉(southbanana).
public class northbanana extends banana
}
public class southbanana extends banana
}
繼續寫工廠,與之前的fruitfactory有所不同,此時的fruitfactory需為每乙個產品等級結構新增獲取方法宣告。
public inte***ce fruitfactory
為每乙個產品族新增相應的工廠,northfruitfactory負責生產所有北方的水果,southfruitfactory負責生產所有南方的水果。
public class northfruitfactory implements fruitfactory
public fruit getbanana()
}
public class southfruitfactory implements fruitfactory
public fruit getbanana()
}
在客戶端中進行測試,**如下。
public class client
}
執行程式列印結果如下:
採集北方蘋果
採集北方香蕉
採集南方蘋果
採集南方香蕉
抽象工廠模式有以下優點:
1、抽象工廠模式隔離了具體產品類的生產,使得客戶並不需要知道即將建立的物件的具體型別。
2、當乙個產品族中的多個物件被設計成一起工作時,它能保證客戶端始終只使用同乙個產品族中的物件。
3、增加新的具體工廠和產品族很方便,無須修改已有系統,符合「開閉原則」。
抽象工廠模式有以下缺點:
增加新的產品等級結構很複雜,需要修改抽象工廠和所有的具體工廠類,對「開閉原則」的支援呈現傾斜性。
優點**舉例:需求更改需要增加溫室產品族。
先增加溫室蘋果和溫室香蕉兩個類。
public void get()
}
public class wenshibanana extends banana
}
再增加生產溫室水果的溫室工廠。
public class wenshifruitfactory implements fruitfactory
public fruit getbanana()
}
在客戶端中測試一下,建立溫室水果測試。
public class client
}
執行程式列印結果如下:
採集溫室蘋果
採集溫室香蕉
產自溫室的蘋果和香蕉被正確建立,只是增加了新產品族的具體產品類和負責生產該產品族所有產品的工廠,無需對現有**進行修改,很好的符合「開閉原則」。 java設計模式 抽象工廠模式
1.概念 設計模式 一書中對於抽象工廠模式是這樣定義的 提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。產品 plant介面 public inte ce plant 標誌介面 具體產品planta,plantb public class planta implements pl...
Java設計模式 抽象工廠模式
抽象工廠模式可以向客戶端提供乙個介面,使得客戶端在不必指定產品具體型別的情況下,建立多個產品族中的產品物件。這就是抽象工廠模式的用意。每個模式都是針對一定問題的解決方案。抽象工廠模式面對的問題是多產品等級結構的系統設計。在學習抽象工廠具體例項之前,應該明白兩個重要的概念 產品族和產品等級。產品族 是...
JAVA設計模式 抽象工廠模式
抽象工廠模式 abstact factory pattern 也是建立型模式之一 之前主要介紹了工廠方法模式 抽象工廠模式和工廠方法模式稍有區別 工廠方法模式中工廠類生產出來的產品都是具體的 也就是說每個工廠都會生產某一種具體的產品 但是如果工廠類中所生產出來的產品是多種多樣的 工廠方法模式也就不再...