天書的博客
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
管理
<
2008年9月
>
日
一
二
三
四
五
六
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
11
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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
博客園
模板提供:
滬江博客
色偷偷88888欧美精品久久久
|
狠狠色综合网站久久久久久久
|
亚洲另类欧美综合久久图片区
|
久久婷婷国产剧情内射白浆
|
一本色道久久HEZYO无码
|
66精品综合久久久久久久
|
中文字幕无码久久精品青草
|
亚洲欧美日韩精品久久亚洲区
|
亚洲乱码精品久久久久..
|
久久精品女人天堂AV麻
|
97久久婷婷五月综合色d啪蜜芽
|
久久涩综合
|
精品无码久久久久久国产
|
狠狠色噜噜色狠狠狠综合久久
|
久久这里只精品国产99热
|
亚洲欧洲中文日韩久久AV乱码
|
国产精品久久久久久久久久影院
|
精品久久香蕉国产线看观看亚洲
|
久久天天躁狠狠躁夜夜2020
|
一本一道久久a久久精品综合
|
亚洲国产精品无码久久98
|
久久综合九色综合久99
|
亚洲国产成人久久综合区
|
精品久久久久久亚洲精品
|
亚洲欧美伊人久久综合一区二区
|
99麻豆久久久国产精品免费
|
亚洲精品成人网久久久久久
|
欧美一区二区三区久久综
|
99久久亚洲综合精品成人
|
欧美日韩精品久久久久
|
国产一级做a爰片久久毛片
|
伊人久久大香线蕉综合5g
|
亚洲嫩草影院久久精品
|
久久久久99精品成人片试看
|
无码久久精品国产亚洲Av影片
|
国内精品久久久久影院网站
|
少妇人妻88久久中文字幕
|
国产成人综合久久精品红
|
久久久久国产一区二区
|
精品国产一区二区三区久久久狼
|
久久不见久久见免费影院www日本
|