国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

設(shè)計模式C#描述——抽象工廠模式

2024-07-21 02:25:08
字體:
供稿:網(wǎng)友
設(shè)計模式c#描述——抽象工廠模式



閱讀此文應(yīng)先閱讀簡單工廠模式與工廠方法模式

抽象工廠模式是對象的創(chuàng)建模式,它是工廠方法模式的進(jìn)一步推廣。

假設(shè)一個子系統(tǒng)需要一些產(chǎn)品對象,而這些產(chǎn)品又屬于一個以上的產(chǎn)品等級結(jié)構(gòu)。那么為了將消費這些產(chǎn)品對象的責(zé)任和創(chuàng)建這些產(chǎn)品對象的責(zé)任分開,可以引進(jìn)抽象工廠模式。這樣的話,消費產(chǎn)品的客戶不需要直接參與產(chǎn)品的創(chuàng)建工作,而只需要向一個公用的工廠接口請求所需要的產(chǎn)品。

采用抽象工廠模式設(shè)計出的系統(tǒng)類圖如下。




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

抽象工廠角色:擔(dān)任這個角色的是工廠方法模式的核心,它是與應(yīng)用系統(tǒng)的商業(yè)邏輯無關(guān)的。通常使用接口或抽象類實現(xiàn)。

具體工廠角色:這個角色直接在客戶端的調(diào)用下創(chuàng)建產(chǎn)品的實例。這個角色含有選擇合適的產(chǎn)品對象的邏輯,而這個邏輯是與應(yīng)用系統(tǒng)的商業(yè)邏輯緊密相關(guān)的。通常使用具體的類實現(xiàn)。

抽象產(chǎn)品角色:擔(dān)任這個角色的類是抽象工廠方法模式所創(chuàng)建的對象的父類,或它們共同擁有的接口。通常使用接口或抽象類實現(xiàn)這一角色。

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

下面給出這個系統(tǒng)的原代碼:



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()

{

}

}

在以下情況下應(yīng)該使用抽象工廠模式:

一個系統(tǒng)不應(yīng)當(dāng)依賴于產(chǎn)品類實例如何被創(chuàng)建、組合和表達(dá)的細(xì)節(jié),這對于所有形態(tài)的工廠模式都是重要的。

這個系統(tǒng)的產(chǎn)品有多于一個的產(chǎn)品族,而系統(tǒng)只消費其中某一族的產(chǎn)品。

同屬于同一個產(chǎn)品族的產(chǎn)品是在一起使用的,這一約束必須在系統(tǒng)的設(shè)計中體現(xiàn)出來。

系統(tǒng)提供一個產(chǎn)品類的庫,所有的產(chǎn)品以同樣的接口出現(xiàn),從而使客戶端不依賴于實現(xiàn)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 安康市| 泽州县| 兰坪| 八宿县| 庆城县| 西充县| 苗栗县| 清水河县| 阿克陶县| 南丰县| 东源县| 临夏县| 岢岚县| 澜沧| 东莞市| 杭锦旗| 五原县| 娄底市| 灌南县| 曲阳县| 定安县| 台东市| 绥宁县| 三江| 丰台区| 西吉县| 宁城县| 桑植县| 嘉鱼县| 北流市| 平度市| 凉城县| 永胜县| 竹北市| 兴宁市| 哈尔滨市| 大渡口区| 五大连池市| 沙田区| 临漳县| 高雄县|