人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

設計模式C#描述——抽象工廠模式

設計模式C#描述——抽象工廠模式

更新時間:2022-07-06 文章作者:未知 信息來源:網絡 閱讀次數:

設計模式C#描述——抽象工廠模式



閱讀此文應先閱讀簡單工廠模式與工廠方法模式

抽象工廠模式是對象的創建模式,它是工廠方法模式的進一步推廣。

假設一個子系統需要一些產品對象,而這些產品又屬于一個以上的產品等級結構。那么為了將消費這些產品對象的責任和創建這些產品對象的責任分開,可以引進抽象工廠模式。這樣的話,消費產品的客戶不需要直接參與產品的創建工作,而只需要向一個公用的工廠接口請求所需要的產品。

采用抽象工廠模式設計出的系統類圖如下。




從上圖可以看到,抽象工廠模式設計到以下的角色:

抽象工廠角色:擔任這個角色的是工廠方法模式的核心,它是與應用系統的商業邏輯無關的。通常使用接口或抽象類實現。

具體工廠角色:這個角色直接在客戶端的調用下創建產品的實例。這個角色含有選擇合適的產品對象的邏輯,而這個邏輯是與應用系統的商業邏輯緊密相關的。通常使用具體的類實現。

抽象產品角色:擔任這個角色的類是抽象工廠方法模式所創建的對象的父類,或它們共同擁有的接口。通常使用接口或抽象類實現這一角色。

具體產品角色:抽象工廠模式所創建的任何產品對象都是某一具體產品類的實例。這是客戶端最終需要的東西。通常使用具體類實現這個角色。

下面給出這個系統的原代碼:



Creator:

public interface Creator

{

ProductA factoryA();

ProductB factoryB();

}



ConcreteCreator1:

public class ConcreteCreator1:Creator

{

public ProductA factoryA()

{

return new ProductA1();

}

public ProductB factoryB()

{

return new ProductB1();

}

}



ConcreteCreator2:

public class ConcreteCreator2:Creator

{

public ProductA factoryA()

{

return new ProductA2();

}

public ProductB factoryB()

{

return new ProductB2();

}

}



ProductA:

public interface ProductA

{

}



ProductA1:

public class ProductA1:ProductA

{

public ProductA1()

{

}

}



ProductA2:

public class ProductA2:ProductA

{

public ProductA2()

{

}

}



ProductB:

public interface ProductB

{

}



ProductB1:

public class ProductB1:ProductB

{

public ProductB1()

{

}

}



ProductB2:

public class ProductB2:ProductB

{

public ProductB2()

{

}

}

在以下情況下應該使用抽象工廠模式:

一個系統不應當依賴于產品類實例如何被創建、組合和表達的細節,這對于所有形態的工廠模式都是重要的。

這個系統的產品有多于一個的產品族,而系統只消費其中某一族的產品。

同屬于同一個產品族的產品是在一起使用的,這一約束必須在系統的設計中體現出來。

系統提供一個產品類的庫,所有的產品以同樣的接口出現,從而使客戶端不依

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 东乡县| 利辛县| 陆川县| 泽州县| 龙里县| 中宁县| 革吉县| 措勤县| 北海市| 武宁县| 吉林市| 张家界市| 安徽省| 延寿县| 凤山市| 新巴尔虎左旗| 四子王旗| 南召县| 沁源县| 泸溪县| 纳雍县| 晋城| 三河市| 鹤庆县| 同德县| 玛多县| 张掖市| 搜索| 台安县| 尚志市| 台东市| 隆安县| 阿合奇县| 永仁县| 吴堡县| 孟津县| 行唐县| 浠水县| 中阳县| 桓仁| 顺昌县|