天書的博客
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
博客園
模板提供:
滬江博客
欧美精品福利视频一区二区三区久久久精品
|
日韩人妻无码精品久久久不卡
|
伊人久久大香线蕉影院95
|
一本大道加勒比久久综合
|
国产精品丝袜久久久久久不卡
|
免费精品国产日韩热久久
|
亚洲综合伊人久久综合
|
AAA级久久久精品无码片
|
久久精品国产福利国产琪琪
|
久久人人爽人人爽人人爽
|
91亚洲国产成人久久精品
|
久久综合精品国产一区二区三区
|
亚洲国产婷婷香蕉久久久久久
|
午夜不卡888久久
|
亚洲AⅤ优女AV综合久久久
|
久久精品人人做人人爽电影
|
亚洲中文久久精品无码ww16
|
97久久超碰国产精品旧版
|
精品久久久中文字幕人妻
|
国产婷婷成人久久Av免费高清
|
久久久精品视频免费观看
|
大伊人青草狠狠久久
|
伊人久久大香线蕉亚洲五月天
|
国产一级做a爰片久久毛片
|
狠狠色丁香婷婷久久综合
|
久久综合色区
|
日本久久久久久中文字幕
|
99久久免费国产特黄
|
久久综合亚洲色一区二区三区
|
久久精品一区二区影院
|
狠狠色丁香久久婷婷综
|
精品少妇人妻av无码久久
|
亚洲级αV无码毛片久久精品
|
亚洲AV日韩AV永久无码久久
|
中文成人久久久久影院免费观看
|
88久久精品无码一区二区毛片
|
精品久久久中文字幕人妻
|
久久久久久久免费视频
|
性做久久久久久免费观看
|
很黄很污的网站久久mimi色
|
合区精品久久久中文字幕一区
|