Can you summarize the following document?
        
  抽象工廠模式的實質是“提供介面,建立一系列相關或獨立的物件,而不指定這些物件的具體類。”

  具體的工廠決定了建立物件的具體型別,而且工廠就是物件實際建立的地方(比如在C++中,用“new”操作符建立物件)。然而,抽象工廠只返回一個指向建立的物件的抽象引用(或指標)。  這樣,客戶端程式呼叫抽象工廠引用的方法,由具體工廠完成物件建立,然後客戶端程式得到的是抽象產品的引用。如此使客戶端程式碼與物件的建立分離開來。  因為工廠僅僅返回一個抽象產品的引用(或指標),所以客戶端程式不知道(也不會牽絆於)工廠建立物件的具體型別。然而,工廠知道具體物件的型別;例如,工廠可能從配置檔案中讀取某種型別。這時,客戶端沒有必要指定具體型別,因為已經在配置檔案中指定了。通常,這意味著:

  

  codice_24介面中的codice_25方法返回codice_26型別的物件。返回codice_26的哪種實現依賴於使用codice_24的哪種實現。  需要注意的是,為了簡潔起見,以上類圖僅僅展示了建立一個型別物件的工廠。而在抽象工廠模式中,通常一個工廠能夠建立若干種不同型別的物件。

  假設我們有兩種產品介面 Button 和 Border,每一種產品都支援多種系列,比如 Mac 系列和 Windows 系列。這樣每個系列的產品分別是 MacButton, WinButton, MacBorder, WinBorder 。為了可以在執行時刻建立一個系列的產品族,我們可以為每個系列的產品族建立一個工廠 MacFactory 和 WinFactory 。每個工廠都有兩個方法 CreateButton 和 CreateBorder 並返回對應的產品,可以將這兩個方法抽象成一個介面 AbstractFactory 。這樣在執行時刻我們可以選擇建立需要的產品系列。

  我們的產品結構是這樣的 對應的工廠是這樣的 那麼客戶可以根據需要選擇 Mac 風格或者 Win 風格來建立 Button 或 Border

  那麼客戶可以根據需要選擇 Mac 風格或者 Win 風格的 Button 或 Border 來建立

  public class WinFactory {

  在以下情況可以考慮使用抽象工廠模式:
抽象工廠模式(英語:Abstract factory pattern)是一種軟體開發設計模式。抽象工廠模式提供了一種方式,可以將一組具有同一主題的單獨的工廠封裝起來。在正常使用中,客戶端程式需要建立抽象工廠的具體實現,然後使用抽象工廠作為介面來建立這一主題的具體物件。客戶端程式不需要知道(或關心)它從這些內部的工廠方法中獲得物件的具體型別,因為客戶端程式僅使用這些物件的通用介面。抽象工廠模式將一組物件的實現細節與他們的一般使用分離開來。