天書的博客
C++博客
首頁
新文章
新隨筆
聚合
管理
posts - 124, comments - 29, trackbacks - 0
抽象工廠模式及范例
Abstract Factory 模式:關鍵特征
意圖:為特定(不同)的客戶提供特定(不同)系列的對象
。
比如Vista風格的桌面,Window標準的桌面(其中包括圖標的樣式,菜單欄,任務欄等)
問題:一系列相關或相互依賴的對象需要被實例化
解決方案:
先定義一個抽象工廠類來選擇工廠類(可以根據配置文件選取)
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
}
各個工廠類里創建不同系列的對象(同一工廠類里的對象風格相同),但他們有一個共同的接口或父類
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();
,提供一種“封裝機制”來避免客戶程序和這種“多系列具體對象創建工作”的緊耦合。每次在中國和美國的工資體制上切換時可以通過更改配置文件來切換。這樣就避免了源代碼保密的情況下無法更改業務規則的弊端。
配置文件如下
<?
xml version
=
"
1.0
"
encoding
=
"
utf-8
"
?>
<
configuration
>
<
appSettings
>
<
add key
=
"
FactoryName
"
value
=
"
ChineseFactory
"
/>
</
appSettings
>
</
configuration
>
posted on 2008-06-24 11:00
天書
閱讀(837)
評論(0)
編輯
收藏
引用
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
<
2010年6月
>
日
一
二
三
四
五
六
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
1
2
3
4
5
6
7
8
9
10
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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
韓全磊的技術Blog
搜索
最新評論
1.?re: 插件化開發——接口和反射[未登錄]
評論內容較長,點擊標題查看
--x
2.?re: 觸發器作用 一種特殊的存儲過程,它在插入,刪除或修改特定表中的數據時觸發執行
thank you
--enen
3.?re: C#屬性解析——綜合“公有字段的簡單而直接的表達式"和get和set函數提供的控制權"而產生的
很詳細
--www
4.?re: C# winform DevExpress GridControl GridView大批量數據(20萬條)導出Excel[未登錄]
導出的數據打不開啊,不是EXCEL啊
--李
5.?re: C# textbox 屬性 TabStop 控制輸入焦點
sdfs
--78
閱讀排行榜
1.?DateTimePicker 控件的格式設置 CustomFormat yyyy-MM-dd HH:mm:ss 月大寫M,分鐘小寫m,小時H代表24小時計算,h代表12小時計算(20835)
2.?DevExpress.XtraCharts 使用心得(9952)
3.?c# 中treeview 樹節點圖標的動態加載,及選中時圖標改變(7851)
4.?C# winform DevExpress GridControl GridView大批量數據(20萬條)導出Excel(7590)
5.?DevExpress TreeList 調優_綁定數據源方式, 放棄原來的AppendNode加載數據的方式(6779)
評論排行榜
1.?D3D中鏡面反射效果實現(3)
2.?C# 多行textbox 按回車鍵提取光標所在行字符串且在最上面一行顯示,光標回歸第一行(3)
3.?c# 圓形按鈕制作——Region屬性(3)
4.?C# textbox 屬性 TabStop 控制輸入焦點(2)
5.?c# 兩個TextBox 同步滾動 實現行號功能 (1)
Copyright ©2025 天書 Powered By
博客園
模板提供:
滬江博客
久久99免费视频
|
77777亚洲午夜久久多人
|
麻豆成人久久精品二区三区免费
|
欧美与黑人午夜性猛交久久久
|
无遮挡粉嫩小泬久久久久久久
|
久久亚洲AV无码精品色午夜
|
国产精品久久久久久吹潮
|
久久久99精品一区二区
|
成人综合久久精品色婷婷
|
久久久久久久亚洲Av无码
|
久久国产综合精品五月天
|
亚洲国产欧洲综合997久久
|
日本精品久久久久中文字幕8
|
尹人香蕉久久99天天拍
|
国产精品无码久久久久久
|
中文字幕精品久久
|
91精品婷婷国产综合久久
|
久久九九兔免费精品6
|
国产精品久久免费
|
欧美亚洲国产精品久久
|
精品久久久久中文字
|
久久国产免费观看精品3
|
久久久久久精品无码人妻
|
99久久国产综合精品五月天喷水
|
人人狠狠综合久久亚洲
|
国产精品久久久久aaaa
|
午夜久久久久久禁播电影
|
日日狠狠久久偷偷色综合免费
|
久久天堂电影网
|
国产精品久久毛片完整版
|
亚洲欧美日韩中文久久
|
欧美激情一区二区久久久
|
久久精品视屏
|
99久久精品免费看国产一区二区三区
|
久久久久久无码Av成人影院
|
精品熟女少妇AV免费久久
|
一本色综合久久
|
久久综合亚洲鲁鲁五月天
|
一本久久a久久精品综合香蕉
|
亚洲精品乱码久久久久久蜜桃
|
久久国产高清一区二区三区
|