天書的博客
C++博客
首頁
新文章
新隨筆
聚合
管理
posts - 124, comments - 29, trackbacks - 0
抽象工廠模式及范例
Abstract Factory 模式:關(guān)鍵特征
意圖:為特定(不同)的客戶提供特定(不同)系列的對象
。
比如Vista風格的桌面,Window標準的桌面(其中包括圖標的樣式,菜單欄,任務(wù)欄等)
問題:一系列相關(guān)或相互依賴的對象需要被實例化
解決方案:
先定義一個抽象工廠類來選擇工廠類(可以根據(jù)配置文件選取)
1
class
AbstractFactory
2
{
3
private
string
FactoryType
=
null
;
4
System.Configuration.AppSettingsReader asr
=
new
System.Configuration.AppSettingsReader();
5
public
IFactory GetFactory()
6
{
7
FactoryType
=
(
string
)asr.GetValue(
"
FactoryName
"
,
typeof
(
string
));
8
switch
(FactoryType)
9
{
10
case
"
ChineseFactory
"
:
11
return
new
ChineseFactory();
12
break
;
13
case
"
AmericanFactory
"
:
14
return
new
AmericanFactory();
15
break
;
16
default
:
17
return
new
ChineseFactory();
18
}
19
20
}
21
}
各個工廠類里創(chuàng)建不同系列的對象(同一工廠類里的對象風格相同),但他們有一個共同的接口或父類
1
interface
IFactory
2
{
3
Service CreateService();
4
}
5
6
class
ChineseFactory : IFactory
7
{
8
9
IFactory 成員
#region
IFactory 成員
10
11
Service IFactory.CreateService()
12
{
13
return
new
ChineseService();
14
}
15
16
#endregion
17
}
18
class
AmericanFactory : IFactory
19
{
20
IFactory 成員
#region
IFactory 成員
21
22
Service IFactory.CreateService()
23
{
24
return
new
AmericanService();
25
}
26
27
#endregion
28
}
最后在客戶端Service se = (new AbstractFactory()).GetFactory().CreateService();
,提供一種“封裝機制”來避免客戶程序和這種“多系列具體對象創(chuàng)建工作”的緊耦合。每次在中國和美國的工資體制上切換時可以通過更改配置文件來切換。這樣就避免了源代碼保密的情況下無法更改業(yè)務(wù)規(guī)則的弊端。
配置文件如下
<?
xml version
=
"
1.0
"
encoding
=
"
utf-8
"
?>
<
configuration
>
<
appSettings
>
<
add key
=
"
FactoryName
"
value
=
"
ChineseFactory
"
/>
</
appSettings
>
</
configuration
>
posted on 2008-06-24 11:00
天書
閱讀(836)
評論(0)
編輯
收藏
引用
只有注冊用戶
登錄
后才能發(fā)表評論。
【推薦】100%開源!大型工業(yè)跨平臺軟件C++源碼提供,建模,組態(tài)!
網(wǎng)站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
<
2010年1月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(5)
給我留言
查看公開留言
查看私人留言
隨筆檔案
2013年11月 (2)
2013年10月 (2)
2013年4月 (1)
2010年12月 (1)
2010年11月 (1)
2010年10月 (2)
2010年8月 (1)
2010年6月 (2)
2010年5月 (3)
2010年4月 (4)
2010年3月 (1)
2010年2月 (4)
2010年1月 (4)
2009年11月 (1)
2009年9月 (2)
2009年7月 (1)
2009年6月 (1)
2009年4月 (1)
2009年2月 (9)
2008年12月 (2)
2008年11月 (6)
2008年10月 (15)
2008年9月 (29)
2008年6月 (17)
2008年5月 (3)
2008年4月 (6)
2008年3月 (3)
文章分類
Direct3D(1)
文章檔案
2013年4月 (1)
2008年6月 (1)
2008年3月 (1)
好友的Bolg
韓全磊的技術(shù)Blog
搜索
最新評論
1.?re: 插件化開發(fā)——接口和反射[未登錄]
評論內(nèi)容較長,點擊標題查看
--x
2.?re: 觸發(fā)器作用 一種特殊的存儲過程,它在插入,刪除或修改特定表中的數(shù)據(jù)時觸發(fā)執(zhí)行
thank you
--enen
3.?re: C#屬性解析——綜合“公有字段的簡單而直接的表達式"和get和set函數(shù)提供的控制權(quán)"而產(chǎn)生的
很詳細
--www
4.?re: C# winform DevExpress GridControl GridView大批量數(shù)據(jù)(20萬條)導出Excel[未登錄]
導出的數(shù)據(jù)打不開啊,不是EXCEL啊
--李
5.?re: C# textbox 屬性 TabStop 控制輸入焦點
sdfs
--78
閱讀排行榜
1.?DateTimePicker 控件的格式設(shè)置 CustomFormat yyyy-MM-dd HH:mm:ss 月大寫M,分鐘小寫m,小時H代表24小時計算,h代表12小時計算(20816)
2.?DevExpress.XtraCharts 使用心得(9941)
3.?c# 中treeview 樹節(jié)點圖標的動態(tài)加載,及選中時圖標改變(7843)
4.?C# winform DevExpress GridControl GridView大批量數(shù)據(jù)(20萬條)導出Excel(7547)
5.?DevExpress TreeList 調(diào)優(yōu)_綁定數(shù)據(jù)源方式, 放棄原來的AppendNode加載數(shù)據(jù)的方式(6772)
評論排行榜
1.?D3D中鏡面反射效果實現(xiàn)(3)
2.?C# 多行textbox 按回車鍵提取光標所在行字符串且在最上面一行顯示,光標回歸第一行(3)
3.?c# 圓形按鈕制作——Region屬性(3)
4.?C# textbox 屬性 TabStop 控制輸入焦點(2)
5.?C# 抽象方法Abstract 和 虛方法Virtual(1)
Copyright ©2025 天書 Powered By
博客園
模板提供:
滬江博客
奇米影视7777久久精品人人爽
|
久久精品国产精品青草app
|
久久亚洲AV成人无码电影
|
久久精品欧美日韩精品
|
成人精品一区二区久久久
|
久久久久女教师免费一区
|
久久亚洲私人国产精品vA
|
国产毛片久久久久久国产毛片
|
久久最近最新中文字幕大全
|
久久综合伊人77777麻豆
|
午夜不卡久久精品无码免费
|
蜜臀av性久久久久蜜臀aⅴ
|
香蕉久久夜色精品国产小说
|
久久只有这精品99
|
久久精品国产亚洲av瑜伽
|
久久精品国产亚洲av高清漫画
|
久久综合色之久久综合
|
成人国内精品久久久久一区
|
久久久久久久久久久
|
国产激情久久久久影院老熟女免费
|
91精品国产91久久综合
|
久久乐国产综合亚洲精品
|
激情久久久久久久久久
|
国产成人久久精品区一区二区
|
久久精品国产精品亚洲精品
|
久久综合成人网
|
久久99精品免费一区二区
|
yellow中文字幕久久网
|
狠狠色丁香婷综合久久
|
精品午夜久久福利大片
|
久久久免费精品re6
|
国产精品国色综合久久
|
久久婷婷五月综合国产尤物app
|
亚洲精品无码久久一线
|
国产精品99久久久精品无码
|
婷婷国产天堂久久综合五月
|
亚洲AV伊人久久青青草原
|
久久影视综合亚洲
|
精品伊人久久大线蕉色首页
|
一本色道久久综合亚洲精品
|
99久久99久久精品国产片果冻
|