ivaneeo's blog
自由的力量,自由的生活。
BlogJava
::
首頁
::
聯系
::
聚合
::
管理
669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(32)
給我留言
查看公開留言
查看私人留言
我參與的團隊
隨筆分類
Android--機器人的威力(1)
bi(商務智能)(5)
C-自由的靈魂(10)
debian-企鵝中最像牛(29)
emacs-牛露鋒芒(39)
english-英文(25)
erlang-分布式語言(6)
flex-我酷所以我在(5)
freebsd魔力(9)
gcc小試牛力(13)
GNU牛力(138)
java魔力(76)
lua-擼語言(3)
oralce-為什么這么強大(8)
perl-殺雞就要用牛刀(14)
qt-革命(1)
refactoring-從地獄中重生(149)
ruby-寶石也鋒芒(22)
scala-fun!(4)
scheme-語言之母(8)
tip(33)
web2.0(3)
云(47)
互聯網(15)
可愛的python(2)
物聯網(4)
隨筆檔案
2015年7月 (2)
2015年6月 (1)
2015年5月 (1)
2015年4月 (10)
2015年3月 (10)
2015年2月 (5)
2015年1月 (4)
2014年12月 (20)
2014年11月 (10)
2014年10月 (3)
2014年9月 (3)
2014年8月 (1)
2014年7月 (1)
2014年6月 (1)
2014年5月 (2)
2014年4月 (4)
2014年3月 (8)
2014年2月 (2)
2013年12月 (5)
2013年11月 (3)
2013年10月 (4)
2013年9月 (2)
2013年8月 (2)
2013年6月 (2)
2013年5月 (3)
2013年4月 (1)
2012年12月 (3)
2012年11月 (2)
2012年10月 (1)
2012年6月 (1)
2012年4月 (3)
2012年3月 (1)
2012年2月 (8)
2011年12月 (6)
2011年11月 (1)
2011年10月 (6)
2011年9月 (4)
2011年8月 (3)
2011年7月 (3)
2011年6月 (14)
2011年5月 (6)
2011年4月 (3)
2011年3月 (2)
2011年2月 (4)
2011年1月 (20)
2010年12月 (9)
2010年10月 (4)
2009年10月 (4)
2009年4月 (1)
2008年12月 (2)
2007年10月 (1)
2007年4月 (3)
2007年2月 (5)
2006年11月 (10)
2006年10月 (4)
2006年9月 (21)
2006年7月 (7)
2006年5月 (1)
2006年4月 (18)
2006年3月 (5)
2006年2月 (10)
2006年1月 (8)
2005年12月 (14)
2005年11月 (46)
2005年10月 (16)
2005年9月 (59)
2005年8月 (220)
搜索
最新評論
1.?re: 在windows下使用Xming+Putty顯示Linux下軟件圖形界面
好好好,這樣做確實成功了。包括那個錯誤處理!
--WFC
2.?re: Hive與HBase的整合[未登錄]
hive集成hbase數據同步過程中如果出現異常,會是什么結果? 例如往hive的表中插入100w記錄,往hbase同步的到一半的時候出現一個異常,會回滾掉所有hive的更新以及hbase的更新嗎
--bill
3.?re: Flex組件IFrame中嵌入HTML頁面的方法
12123
--12
4.?re: Cloudera Impala TarBall 編譯、安裝與配置
評論內容較長,點擊標題查看
--laoyang
5.?re: 在windows下使用Xming+Putty顯示Linux下軟件圖形界面
很好的分享,對我很有幫助。
--LVST
閱讀排行榜
1.?elasticsearch安裝配置及中文分詞(16759)
2.?vim中顯示16進制的值(16744)
3.?windows xp cdkey(14436)
4.?在windows下使用Xming+Putty顯示Linux下軟件圖形界面(13219)
5.?Nginx配置SSL證書部署HTTPS網站(11391)
評論排行榜
1.?GNOME VS KDE(14)
2.?windows xp cdkey(7)
3.?FVWM Beginners Guide(4)
4.?vim中顯示16進制的值(3)
5.?powerdesigner 導入Excel文檔 做成 實體表(3)
#
重構二--在對象之間搬移特性(Introduce Foreign Method)(3)--作法
作法
(Mechanics)
在client class中建立一個函數,用來提供你需要的功能。
==》這個函數不應該取用client class的任何特性。如果它需要一個值,把該值當作參數傳給它。
以server class實體作為該函數的第一個參數。
將該函數注釋為:[外加函數(foreign method),應在server class實現。]
==》這么一來,將來如果有機會將外加函數搬移到server class中,你便可以輕松找出這些外加函數。
posted @
2005-08-31 14:21
ivaneeo 閱讀(253) |
評論 (0)
|
編輯
收藏
重構二--在對象之間搬移特性(Introduce Foreign Method)(2)--動機
動機
(Motivation)
進行本項重構時,如果你以外加函數實現一項功能,那就是一個明確信號;這個函數原本應該在提供服務的(server) class中加以實現。
如果你發現自己為一個server class建立了大量外加函數,或如果你發現有許多classes都需要同樣的外加函數,你就不應該再使用本項重構,而應該使用
Introduce Local Extensiong
(164)。
posted @
2005-08-31 14:15
ivaneeo 閱讀(167) |
評論 (0)
|
編輯
收藏
重構二--在對象之間搬移特性(Introduce Foreign Method)(1)
你所使用的server class需要一個額外函數,但你無法修改這個class。
在client class中建立一個函數,并以一個server class實體作為第一引數(argument)。
Date newStart = new Date(previousEnd.getYear(), previousEnd.getMonth(), previousEnd.getDate() + 1);
Date newStart = nextDay(previousEnd);
private static Date nextDay(Date arg) {
return new Date(arg.getYear(), arg.getMonth(), arg.getDate() + 1);
}
posted @
2005-08-31 14:09
ivaneeo 閱讀(161) |
評論 (0)
|
編輯
收藏
重構二--在對象之間搬移特性(Remove Middle Man)(4)--范例
范例
(Examples)
上一項重構結束時,Person將Department隱藏起來了:
class Person...
Department _department;
public Person getManager() {
return _department.getManager();
}
class Department...
private Person _manager;
public Department(Person manager) {
_manager = manager;
}
為了找出某人的經理,客戶代碼可能這樣寫:
manager = john.getManager();
首先在Person中建立一個[受托對象(delegate)取得函數]:
manager = john.getDepartment.getManager();
然后逐一處理每個委托函數。
為方便起見,我也可能想要保留一部分委托關系(delegations)。此外我也可能希望對某些客戶隱藏委托關系,并讓另一些用戶直接使用受托對象。
posted @
2005-08-31 14:03
ivaneeo 閱讀(207) |
評論 (0)
|
編輯
收藏
重構二--在對象之間搬移特性(Remove Middle Man)(3)--作法
作法
(Mechanics)
建立一個函數,用以取用delegate(受托對象)。
對于每個委托函數(delegate method),在server中刪除該函數,并將[客戶對該函數的調用]替換為[對delegate(受托對象)的調用]。
處理每個委托函數后,編譯、測試。
posted @
2005-08-31 13:54
ivaneeo 閱讀(138) |
評論 (0)
|
編輯
收藏
重構二--在對象之間搬移特性(Remove Middle Man)(2)--動機
動機
(Motivation)
在
Hide Delegate
(157)的[動機]欄,我談到了[封 裝delegated object(受托對象)]的好處。但是這層封裝也是要付出代價的,它的代價就是:每當客戶要使用delegate(受托類)的新特性時,你就必須在 server端添加一個簡單委托函數。隨著delegate的特性(功能)越來越多,這一過程會讓你痛苦不已。server完全變成了一個[中間人],此 時你就應該讓客戶直接調用delegate。
posted @
2005-08-31 13:51
ivaneeo 閱讀(131) |
評論 (0)
|
編輯
收藏
重構二--在對象之間搬移特性(Remove Middle Man)(1)
某個class做了過多的簡單委托動作(simple delegation)。
讓客戶直接調用delegate(受托類)。
posted @
2005-08-31 13:45
ivaneeo 閱讀(174) |
評論 (0)
|
編輯
收藏
重構二--在對象之間搬移特性(Hide Delegate)(4)--范例
范例
(Examples)
本例從兩個classes開始,代表[人]的Person和代表[部門]的Department:
class Person {
Department _department;
public Department getDepartment() {
return _department;
}
public void setDepartment(Department arg) {
_department = arg;
}
}
class Department {
private String _chargeCode;
private Person _manager;
public Department(Person manager) {
_manager = manager;
}
public Person getManager() {
return _manager;
}
...
如果客戶希望知道某人的經理是誰,他必須先取得Department對象:
manager = john.getDepartment().getManager();
這樣的編碼就是對客戶揭露了Department工作原理,于是客戶知道:Department用以追蹤[經理]這條信息。如果對客戶隱藏Department,可以減少耦合(coupling)。為了這一目的,我在Person中建立一個簡單的委托函數:
public Person getManager() {
return _department.getManager();
}
現在,我得修改Person的所有客戶,讓它們改用新函數:
manager = john.getManager();
只要完成了對Department所有函數的委托關系,并相應修改了 Person的所有客戶,我就可以移除Person中的訪問函數個體Department()了。
posted @
2005-08-31 13:35
ivaneeo 閱讀(193) |
評論 (0)
|
編輯
收藏
重構二--在對象之間搬移特性(Hide Delegate)(3)--作法
作法
(Mechanics)
對于每一個委托關系中的函數,在server端建立一個簡單的委托函數(delegating method)。
調整客戶,令它只調用server提供的函數(不得跳過徑自調用下層)。
==》如果client(客戶)和server不在同一個package,考慮修改委托函數(delegating method)的訪問權限,讓client得以在package之外調用它。
每次調整后,編譯并測試。
如果將來不再有任何客戶需要取用圖的Delegate(委托類),便可移除server中的相關訪問函數(accessor for the delegate)。
編譯,測試。
posted @
2005-08-31 13:21
ivaneeo 閱讀(156) |
評論 (0)
|
編輯
收藏
重構二--在對象之間搬移特性(Hide Delegate)(2)--動機
動機
(Motivation)
如果某個客戶調用了[建立了server object(服務對象)的某個值域基礎之上]的函數,那么客戶就必須知曉這一委托對象(delegate object)。萬一委托關系發生變化,客戶也得相應變化。你可以在server端放置一個簡單的委托函數(delegating method),將委托關系隱藏起來,從而去除這種依存性。這么一來即便將來發生關系上的變化,變化將被限制在server中,不會涉及客戶。
posted @
2005-08-31 13:09
ivaneeo 閱讀(221) |
評論 (0)
|
編輯
收藏
僅列出標題
共67頁:
First
上一頁
43
44
45
46
47
48
49
50
51
下一頁
Last
Copyright @ ivaneeo
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster
主站蜘蛛池模板:
无码A级毛片免费视频内谢
|
国产精品久久久久免费a∨
|
久久亚洲精品人成综合网
|
亚洲一区二区三区免费在线观看
|
久久精品女人天堂AV免费观看
|
亚洲网站免费观看
|
亚洲AV无码资源在线观看
|
亚洲日韩小电影在线观看
|
成年女人视频网站免费m
|
成人无码视频97免费
|
精品亚洲成A人无码成A在线观看
|
亚洲国产精品一区二区三区久久
|
嫩草影院在线播放www免费观看
|
久久久久久亚洲av无码蜜芽
|
久久精品国产精品亚洲精品
|
精品少妇人妻AV免费久久洗澡
|
在线毛片片免费观看
|
亚洲av日韩综合一区二区三区
|
亚洲欧洲国产精品你懂的
|
日本高清免费aaaaa大片视频
|
一区二区免费视频
|
九九综合VA免费看
|
亚洲综合精品第一页
|
久久亚洲免费视频
|
国产乱辈通伦影片在线播放亚洲
|
免费无码精品黄AV电影
|
一级成人a毛片免费播放
|
一级毛片a免费播放王色
|
亚洲国产精品免费观看
|
亚洲va无码va在线va天堂
|
免费人妻无码不卡中文字幕18禁
|
中文免费观看视频网站
|
中文字幕乱码系列免费
|
国产亚洲视频在线
|
亚洲欧美日韩中文无线码
|
亚洲第一成年人网站
|
亚洲AV无码成人专区片在线观看
|
波多野结衣中文字幕免费视频
|
色欲色香天天天综合网站免费
|
一级做a爰片性色毛片免费网站
|
亚洲入口无毒网址你懂的
|