夢幻之旅
DEBUG - 天道酬勤
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
<
2011年8月
>
日
一
二
三
四
五
六
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
7
8
9
10
公告
本博客中未注原創的文章均為轉載,對轉載內容可能做了些修改和增加圖片注釋,如果侵犯了您的版權,或沒有注明原作者,請諒解
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(21)
給我留言
查看公開留言
查看私人留言
隨筆分類
(644)
Android(10)
(rss)
ANT(4)
(rss)
C#(10)
(rss)
C/C++(16)
(rss)
CSS(3)
(rss)
DataBase(119)
(rss)
DB-DailyMmaintenance(16)
(rss)
Design Patterns(27)
(rss)
english
(rss)
Exceptions(7)
(rss)
EXT(39)
(rss)
FLASH(9)
(rss)
Hardware(20)
(rss)
Hibernate(13)
(rss)
Html(23)
(rss)
Java(143)
(rss)
java Net(10)
(rss)
JavaScript(39)
(rss)
Linux(26)
(rss)
php(5)
(rss)
Regular Exp(3)
(rss)
Spring(17)
(rss)
Struts(12)
(rss)
TOOL(43)
(rss)
VB/VBA/VBS(5)
(rss)
webservice(9)
(rss)
XML(2)
(rss)
我的夢幻旅途(14)
(rss)
隨筆檔案
(669)
2017年9月 (4)
2016年10月 (1)
2015年6月 (1)
2015年4月 (2)
2015年1月 (1)
2014年8月 (2)
2014年7月 (9)
2014年6月 (1)
2014年5月 (2)
2014年4月 (3)
2014年3月 (3)
2013年10月 (4)
2013年9月 (8)
2013年8月 (4)
2013年6月 (3)
2013年5月 (4)
2013年4月 (7)
2013年3月 (1)
2013年1月 (3)
2012年12月 (4)
2012年11月 (1)
2012年10月 (1)
2012年9月 (4)
2012年8月 (1)
2012年7月 (2)
2012年6月 (1)
2012年5月 (4)
2012年4月 (2)
2012年3月 (1)
2012年2月 (4)
2012年1月 (6)
2011年12月 (10)
2011年11月 (7)
2011年10月 (6)
2011年9月 (37)
2011年8月 (34)
2011年7月 (44)
2011年6月 (10)
2011年5月 (5)
2011年4月 (3)
2011年3月 (1)
2011年2月 (1)
2011年1月 (18)
2010年12月 (9)
2010年11月 (13)
2010年10月 (17)
2010年9月 (2)
2010年8月 (10)
2010年7月 (10)
2010年6月 (5)
2010年5月 (8)
2010年4月 (9)
2010年3月 (11)
2010年2月 (3)
2010年1月 (8)
2009年12月 (6)
2009年11月 (10)
2009年10月 (5)
2009年9月 (1)
2009年8月 (18)
2009年7月 (6)
2009年6月 (2)
2009年5月 (1)
2009年4月 (4)
2009年3月 (6)
2009年2月 (5)
2009年1月 (3)
2008年12月 (13)
2008年11月 (13)
2008年10月 (30)
2008年9月 (9)
2008年8月 (24)
2008年7月 (17)
2008年6月 (15)
2008年5月 (16)
2008年4月 (15)
2008年3月 (19)
2008年2月 (3)
2008年1月 (20)
2007年12月 (24)
2007年11月 (9)
文章檔案
(6)
2008年4月 (1)
2008年3月 (1)
2008年1月 (2)
2007年11月 (2)
最新隨筆
1.?PP代碼生成器(四) 使用解決方案生成代碼
2.? PP代碼生成器(三) 設計freemarker模板, 創建解決方案
3.? PP代碼生成器(二) 解決方案, 生成任務, 輔助設計面板
4.? PP代碼生成器(一) 簡介, 下載, 運行
5.?PP持久層代碼生成器
6.?比較好的博客
7.?系統集成項目管理工程師
8.?軟件公司項目經理崗位職責
9.?聯想筆記本 顯示屏 鍵盤失靈 釋放靜電
10.?eclipse maven
積分與排名
積分 - 963649
排名 - 36
最新評論
1.?re: Myeclipse 快捷鍵大全(絕對全)
crl+向右箭頭(輸入法有問題打不出來)移到下一個參數的位置,然后crl+shift+向右箭頭 選中該位置的參數即可
--紅領巾
2.?re: Log4j基本使用方法
555
--555
3.?re: Myeclipse 快捷鍵大全(絕對全)[未登錄]
很不錯,謝謝
--銀狐
4.?re: Flex 表單
是誰這么無聊~嗚~~~
--HUIKK
5.?re: Spring AfterReturning 異常
具體是什么意思啊
--dingli
閱讀排行榜
1.?Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream(70036)
2.?log4j.properties 使用說明(42091)
3.?Myeclipse 快捷鍵大全(絕對全)(32741)
4.?TNSNAMES.ORA 配置(24403)
5.?oracle 樹狀查詢(21370)
評論排行榜
1.?Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream(53)
2.?JMail 異常: java.lang.NoClassDefFoundError: javax/activation/DataSource(21)
3.?javax.mail.MessagingException: 530 5.7.0 Must issue a STARTTLS command first(14)
4.?java 讀取 excel 2003 或 excel 2007(14)
5.?java.lang.UnsupportedClassVersionError: Bad version number in .class file(8)
[原創]設計模型探索I1-Simple factory parttern 之盤古開天
面臨問題:
由于需求的變化,這個對對象的具體實現經常需要劇烈變化,但是它卻擁有著較穩定的接口.
解決辦法:
如何應對這種變化,需要提供一種"封裝機制"來隔離這種變化,從而保持系統中依賴該對象的對象隨著需求變化而變化.
簡單工廠模式:
嚴格說并不是一個設計模式。簡單工廠沒有抽象類,只有一個具體工廠類如MyFactory,然后MyFactory里面有個工廠方法CreateProduct返回一個基類產品,具體返回什么具體實例通過傳入參數然后用case判斷。
簡單工廠模式的組成部份:
1.產品基類
2.具體產品
3.產品工廠
簡單工廠各部份的組成關系
例子:
1. 手機基類
package
simpleFactory;
/** */
/**
* <ul>
* <li>Title:[Phone]</li>
* <li>Description: [手機抽象類]</li>
* <li>Copyright 2009 Upengs Co., Ltd.</li>
* <li>All right reserved.</li>
* <li>Created by [Huyvanpull] [2011-8-1]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
@version
1.0
*/
public
abstract
class
Phone
{
/** */
/**
手機型號
*/
public
String model;
/** */
/**
*<ul>
*<li>Description:[構造方法]</li>
*<ul>
*
@param
model
*/
public
Phone(String model)
{
this
.model
=
model;
}
/** */
/**
* <ul>
* <li>Description:[打電話]</li>
* <li>Created by [Huyvanpull] [2011-8-1]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*/
public
abstract
void
call();
/** */
/**
* <ul>
* <li>Description:[聽電話]</li>
* <li>Created by [Huyvanpull] [2011-8-1]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*/
public
abstract
void
answer();
/** */
/**
* <ul>
* <li>Description:[發信息]</li>
* <li>Created by [Huyvanpull] [2011-8-1]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*/
public
abstract
void
sendMsg();
/** */
/**
* <ul>
* <li>Description:[收信息]</li>
* <li>Created by [Huyvanpull] [2011-8-1]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*/
public
abstract
void
receiveMsg();
}
2. nokia5233
package
simpleFactory;
/** */
/**
* <ul>
* <li>Title:[Nokia5233]</li>
* <li>Description: [諾基亞5233]</li>
* <li>Copyright 2009 Upengs Co., Ltd.</li>
* <li>All right reserved.</li>
* <li>Created by [Huyvanpull] [2011-8-1]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
@version
1.0
*/
public
class
Nokia5233
extends
Phone
{
public
Nokia5233()
{
super
(
"
5233
"
);
}
/**/
/*
(non-Javadoc)
* @see simpleFactory.Phone#answer()
*/
public
void
answer()
{
System.out.println(
this
.model
+
"
接聽電話
"
);
}
/**/
/*
(non-Javadoc)
* @see simpleFactory.Phone#call()
*/
public
void
call()
{
System.out.println(
this
.model
+
"
打電話
"
);
}
/**/
/*
(non-Javadoc)
* @see simpleFactory.Phone#receiveMsg()
*/
public
void
receiveMsg()
{
System.out.println(
this
.model
+
"
收短信
"
);
}
/**/
/*
(non-Javadoc)
* @see simpleFactory.Phone#sendMsg()
*/
public
void
sendMsg()
{
System.out.println(
this
.model
+
"
發短信
"
);
}
}
3. nokia5235
package
simpleFactory;
/** */
/**
* <ul>
* <li>Title:[Nokia5235]</li>
* <li>Description: [諾基亞5235]</li>
* <li>Copyright 2009 Upengs Co., Ltd.</li>
* <li>All right reserved.</li>
* <li>Created by [Huyvanpull] [2011-8-1]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
@version
1.0
*/
public
class
Nokia5235
extends
Phone
{
public
Nokia5235()
{
super
(
"
5235
"
);
}
/**/
/*
(non-Javadoc)
* @see simpleFactory.Phone#answer()
*/
public
void
answer()
{
System.out.println(
this
.model
+
"
接聽電話
"
);
}
/**/
/*
(non-Javadoc)
* @see simpleFactory.Phone#call()
*/
public
void
call()
{
System.out.println(
this
.model
+
"
打電話
"
);
}
/**/
/*
(non-Javadoc)
* @see simpleFactory.Phone#receiveMsg()
*/
public
void
receiveMsg()
{
System.out.println(
this
.model
+
"
收短信
"
);
}
/**/
/*
(non-Javadoc)
* @see simpleFactory.Phone#sendMsg()
*/
public
void
sendMsg()
{
System.out.println(
this
.model
+
"
發短信
"
);
}
}
4.手機工廠
package
simpleFactory;
/** */
/**
* <ul>
* <li>Title:[PhoneFactory]</li>
* <li>Description: [手機工廠]</li>
* <li>Copyright 2009 Upengs Co., Ltd.</li>
* <li>All right reserved.</li>
* <li>Created by [Huyvanpull] [2011-8-1]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
@version
1.0
*/
public
class
PhoneFactory
{
/** */
/**
* <ul>
* <li>Description:[生產手機]</li>
* <li>Created by [Huyvanpull] [2011-8-1]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
@param
model
*
@return
*/
public
static
Phone createPhone(String model)
{
if
(
"
5233
"
.endsWith(model))
{
return
new
Nokia5233();
}
else
if
(
"
5235
"
.endsWith(model))
{
return
new
Nokia5235();
}
return
null
;
}
}
5.測試類
package
simpleFactory;
public
class
Test
{
/** */
/**
* <ul>
* <li>Description:[method of functional description]</li>
* <li>Created by [Huyvanpull] [2011-8-1]</li>
* <li>Midified by [modifier] [modified time]</li>
* </ul>
*
@param
args
*/
public
static
void
main(String[] args)
{
Phone phone
=
PhoneFactory.createPhone(
"
5233
"
);
phone.call();
phone
=
PhoneFactory.createPhone(
"
5235
"
);
phone.receiveMsg();
}
}
很明顯的缺點就是
Nokia每發明一個新型號的手機都需要修改簡單工廠類(增加if判斷),違反了封閉修改,開放擴展原則。
posted on 2011-08-01 22:03
HUIKK
閱讀(250)
評論(0)
編輯
收藏
所屬分類:
Design Patterns
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
[原創]設計模型探索S-GoF,設計模式的分類
[原創]設計模型探索R-mediator parttern之月下老人
[原創]設計模型探索Q-bridge parttern之橋歸橋路歸路
[原創]設計模型探索P-template method parttern之死?;顦?/a>
[原創]設計模型探索O2-proxy parttern之桃代李疆
[原創]設計模型探索O1-proxy parttern之桃代李疆
[原創]設計模型探索N -flyweight parttern之有福同享
[原創]設計模型探索M-state parttern之各有千秋
[原創]設計模型探索L-composite parttern之玉樹臨風
[原創]設計模型探索K-builder parttern之各施其職
Powered by:
BlogJava
Copyright © HUIKK
主站蜘蛛池模板:
国产伦一区二区三区免费
|
亚洲av无码一区二区三区天堂
|
久久精品国产精品亚洲人人
|
久久精品国产亚洲综合色
|
国产成人精品免费视频大全五级
|
亚洲最大免费视频网
|
色www永久免费
|
人人公开免费超级碰碰碰视频
|
亚洲欧洲无码一区二区三区
|
亚洲字幕在线观看
|
亚洲成人精品久久
|
亚洲精品无码不卡在线播放HE
|
永久免费视频v片www
|
久久精品无码一区二区三区免费
|
又大又硬又爽又粗又快的视频免费
|
99re8这里有精品热视频免费
|
黄网站在线播放视频免费观看
|
亚洲欧洲无卡二区视頻
|
亚洲欧洲另类春色校园网站
|
亚洲大香伊人蕉在人依线
|
亚洲精品白色在线发布
|
7777久久亚洲中文字幕蜜桃
|
久久综合图区亚洲综合图区
|
亚洲精品夜夜夜妓女网
|
亚洲Av综合色区无码专区桃色
|
国产亚洲人成A在线V网站
|
国产成人精品久久亚洲
|
亚洲中文字幕视频国产
|
国产成人精品久久亚洲
|
综合久久久久久中文字幕亚洲国产国产综合一区首
|
国产精品亚洲mnbav网站
|
在线观看午夜亚洲一区
|
亚洲日韩精品一区二区三区
|
国产亚洲av片在线观看播放
|
最近新韩国日本免费观看
|
91人人区免费区人人
|
亚洲啪啪免费视频
|
国产1024精品视频专区免费
|
无限动漫网在线观看免费
|
四虎影院在线免费播放
|
免费一级毛片不卡在线播放
|