天書的博客
C++博客
首頁
新文章
新隨筆
聚合
管理
posts - 124, comments - 29, trackbacks - 0
抽象工廠模式及范例
Abstract Factory 模式:關鍵特征
意圖:為特定(不同)的客戶提供特定(不同)系列的對象
。
比如Vista風格的桌面,Window標準的桌面(其中包括圖標的樣式,菜單欄,任務欄等)
問題:一系列相關或相互依賴的對象需要被實例化
解決方案:
先定義一個抽象工廠類來選擇工廠類(可以根據配置文件選?。?br>
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
天書
閱讀(840)
評論(0)
編輯
收藏
引用
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
<
2008年6月
>
日
一
二
三
四
五
六
25
26
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
1
2
3
4
5
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(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小時計算(20854)
2.?DevExpress.XtraCharts 使用心得(9964)
3.?c# 中treeview 樹節點圖標的動態加載,及選中時圖標改變(7872)
4.?C# winform DevExpress GridControl GridView大批量數據(20萬條)導出Excel(7623)
5.?DevExpress TreeList 調優_綁定數據源方式, 放棄原來的AppendNode加載數據的方式(6790)
評論排行榜
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久久丝袜
|
色婷婷综合久久久久中文字幕
|
久久受www免费人成_看片中文
|
久久久久99精品成人片
|
色综合久久久久无码专区
|
中文字幕一区二区三区久久网站
|
日本久久中文字幕
|
日韩欧美亚洲综合久久影院d3
|
久久只有这精品99
|
91久久国产视频
|
久久永久免费人妻精品下载
|
久久午夜福利电影
|
久久伊人精品青青草原高清
|
性欧美大战久久久久久久久
|
色综合久久88色综合天天
|
国产免费久久精品99久久
|
99久久99这里只有免费费精品
|
麻豆亚洲AV永久无码精品久久
|
久久久久久国产a免费观看不卡
|
日韩人妻无码一区二区三区久久
|
久久99精品久久久久久水蜜桃
|
中文字幕无码精品亚洲资源网久久
|
久久人人爽人爽人人爽av
|
国产成人精品综合久久久
|
热99re久久国超精品首页
|
a级成人毛片久久
|
精品久久久无码人妻中文字幕豆芽
|
伊人久久大香线焦AV综合影院
|
国内精品伊人久久久影院
|
伊人色综合九久久天天蜜桃
|
日韩电影久久久被窝网
|
欧洲国产伦久久久久久久
|
久久精品免费大片国产大片
|
精品久久久久久国产三级
|
久久亚洲AV永久无码精品
|
亚洲天堂久久久
|
久久亚洲精品无码AV红樱桃
|
丰满少妇人妻久久久久久
|
色综合久久综合网观看
|
国内精品久久久久久久久电影网
|
久久五月精品中文字幕
|