1. 程式人生 > >設計模式之抽象工廠Abstract Factory

設計模式之抽象工廠Abstract Factory


定義

抽象工廠模式是一系列相關的介面(工廠組成)封裝成一個Factory。類使用者在使用時,不需要關係具體Factory的實現,僅通過呼叫統一的Abstract Factory物件介面。

C++示例

class OSFactory
{
public:
    virtual createMenu() = 0;
    virtual createBarTool() = 0;
    //...
};

class MSFactory : public OSFactory
{
public:
    virtual createMenu(){
        //...
    }
    virtual createBarTool(){
        //...
    }
    //...
};

class MacFactory : public OSFactory
{
public:
    virtual createMenu(){
        //...
    }
    virtual createBarTool(){
        //...
    }
    //...
};
Enum System{Windows,Mac};
OSFactory *createFactory(System sys)
{
    switch(sys)
    {
        case Windows:
            return new MSFactory;
        case Mac:
            return new MacFactory;
        default:
            return NULL;
    }
}
OSFactory *pAbstractFac = createFactory(Windows);
pAbstractFac->createMenu();
pAbstractFac->createBarTool();

適用範圍:

1.一個系統要獨立於它的產品的建立、組合和表示時

2.一個系統要由多個產品系列中的一個來配置時

3.強調一系列相關的產品物件的設計以便進行聯合使用時

4.提供一個產品類庫,而只想顯示它們的介面而不是實現時

優點:

1.分離抽象介面和具體實現類

2.易於互動產品系列

3.利於產品的一致性

缺點:

1.不容易支援新的產品,需要修改抽象工廠的介面

擴充套件

單例模式、工廠方法

相關推薦

設計模式抽象工廠Abstract Factory

定義 抽象工廠模式是一系列相關的介面(工廠組成)封裝成一個Factory。類使用者在使用時,不需要關係具體Factory的實現,僅通過呼叫統一的Abstract Factory物件介面。 C++示例 class OSFactory { public: virt

設計模式(2)- 抽象工廠(Abstract Factory)

描述:     抽象工廠是一個適用於建立一系列相關的產品的建立性模型.比如設計模式書中經常講的那個例子-支援多視感視窗的工具包,比如windows和motif風格,這個是風格族.每種風格下面都有些標準的產品族,象BUTTON, TextBox, ListBox等.試想一下,如

設計模式抽象工廠-abstract factory

提供一個建立一系列相關或者相互依賴物件的介面,而無須指定他們具體的類 優點: 良好的封裝性:每個產品類與高層之間的關係不需要被client知道,client只需要知道工廠類能夠創建出一個需要的物件即可 產品族內的約束關係為非公開的狀態 缺點:

設計模式抽象工廠模式(Abstract Factory)

3. 抽象工廠模式(Abstract Factory) 目錄 抽象工廠模式(Abstract Factory) 模式動機 模式定義 模式結構 時序圖 程式碼分析 模式分析 例項 優點 缺點

JAVA設計模式抽象工廠模式(Abstract Factory)

目錄 在工廠方法模式中具體工廠負責生產具體的產品,每一個具體工廠對應一種具體產品,工廠方法也具有唯一性,一般情況下,一個具體工廠中只有一個工廠方法或者一組過載的工廠方法。但是有時候我們需要一個工廠可以提供多個產品物件,而不是單一的產品物件。 為了更清晰地

23種設計模式抽象工廠模式

tor turn sql數據庫 png insert face sign 相關 reat 抽象工廠模式(Abstract Factory):提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。 package designMode.abstractFa

學習筆記:設計模式抽象工廠(C#)

sta 實體 mys actor div ted rac int c# 1.創建抽象工廠類 public abstract class AbstractFactory { public abstract Connect CreatConne

設計模式抽象工廠模式

bash 在外 明顯 根據 strac 構圖 case reader oss 抽象工廠模式(Abstract Factory),是23種設計模式之一。DP中是這麽定義抽象工廠模式的: 抽象工廠模式(Abstract Factory),提供一個創建一系列相關或互相依賴對象的

golang設計模式抽象工廠模式

抽象工廠模式 簡介 wiki: 抽象工廠模式(英語:Abstract factory pattern)是一種軟體開發設計模式。抽象工廠模式提供了一種方式,可以將一組具有同一主題的單獨的工廠封裝起來。在正常使用中,客戶端程式需要建立抽象工廠的具體實現,然後使用抽象工廠作為介面來建立這一主題的具體物件。

設計模式抽象工廠模式(Java實現)

抽象工廠是一個超級工廠,用來建立其他工廠,又稱為工廠的工廠,也就是對各種不同的工廠再次進行抽象。在抽象工廠模式中,介面負責建立相關物件的工廠, 每個生成的工廠可以按照工廠模式提供物件。 首先建立兩個介面然後實現具體類 //再建立一個介面Plant interface Plant {

php 設計模式抽象工廠模式

抽象工廠模式(Abstact Factory)是一種常見的軟體設計模式。該模式為一個產品族提供了統一的建立介面。當需要這個產品族的某一系列的時候,可以為此係列的產品族建立一個具體的工廠類。一、意圖抽象工廠模式提供一個建立一系統相關或相互依賴物件的介面,而無需指定它們具體的類【GOF95】二、抽象工廠模式結構圖

(四) 設計模式抽象工廠模式

前面已經說過了簡單工廠模式和普通工廠模式:連結 前沿: 參考圖書:《軟體設計模式與體系結構》   抽象工廠就是普通工廠模式的加強版本 優點:當一個產品族中的多個物件被設計成一起工作時,它能保證客戶端始終只使用同一個產品族中的物件。 使用場景: 1、QQ

趣味設計模式抽象工廠模式

    上篇博文我簡介的介紹了下工廠模式,不知道是不是幫助到了部分人,下面我們再來探討下抽象工廠模式。     某一天,唐三藏一行人西行的路上遇到了一個強大無比的妖怪,唐僧被抓走了,光靠悟空他們沒有辦法把唐僧救回來,這個時候就需要找救兵了。悟空他們第一

二、Python 設計模式抽象工廠

設計模式之抽象工廠 例子的內容: 兩個遊戲: 1.青蛙世界 2.巫妖世界 每個遊戲由三個類組成 主人公 敵人 遊戲世界建立 使用者啟動的時候,輸入主人公英雄名字 和 年齡 程式會根據年齡來判斷,啟動具體的哪一個遊戲 class Frog: def __ini

建立型設計模式抽象工廠模式

抽象工廠模式介紹 在前面已經講解過工廠方法模式,這倆者有什麼區別呢?前面所說的工廠方法模式只會生產一種具體的產品,而抽象工廠模式生產出來的產品是不確定的。例如不同作業系統中控制元件的實現不一樣,展示效果也不一樣,對於作業系統如Android,iOS,WindowPhone本

Java設計模式抽象工廠模式

抽象工廠模式(Abstract Factory Pattern)是圍繞一個超級工廠建立其他工廠。該超級工廠又稱為其他工廠的工廠。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。 在抽象工廠模式中,介面是負責建立一個相關物件的工廠,不需要顯式指定它們的類。每

17、設計模式抽象工廠模式

抽象類 public abstract class Video { public abstract void produce(); } public abstract class Arictle { public abstract void produce

23種設計模式抽象工廠

目錄 1.簡介 2.優點 3.缺點 4.形式 1.簡介 抽象工廠模式是為建立一組相關或相互依賴的物件提供的一個介面,並且無需指定具體的類。很明顯,它是工廠模式的升級版。之前的工廠模式一個工廠就可以了,現在有種情況是工廠模式無法滿足的,就是如果產品之間具有一種相

大話設計模式抽象工廠模式

 抽象 工廠模式的本質:簡單工廠模式+反射,通過反射,將 簡單工廠模式中的switch case 去除,如果有新的演算法, 只需要 新增新的演算法類和配置檔案 即可 直接看程式碼把,之前學過 簡單工廠模式 就好理解了 /** * 基類 加 減 成 除 的共性 *

Android設計模式抽象工廠

抽象工廠模式的定義 為建立一組相關或者是相互依賴的物件提供一個介面,而不需要指定它們的具體類。 抽象工廠的使用場景 一個物件族有相同的約束時可以使用抽象工廠模式。舉個例子: Android、ios、window phone下都有簡訊軟體和撥號軟體,兩者都屬於軟體的範疇