<menuitem id="jdrvb"><strike id="jdrvb"></strike></menuitem>
<cite id="jdrvb"></cite>
<cite id="jdrvb"></cite>
<var id="jdrvb"></var>
<cite id="jdrvb"></cite>
<var id="jdrvb"><video id="jdrvb"><menuitem id="jdrvb"></menuitem></video></var><var id="jdrvb"></var>
<cite id="jdrvb"></cite>
<var id="jdrvb"><video id="jdrvb"></video></var>
<cite id="jdrvb"></cite>
<ins id="jdrvb"><span id="jdrvb"><menuitem id="jdrvb"></menuitem></span></ins>
您現在的位置: 弘智首頁 > JAVA > JAVA資料下載 >

關于能提高Java代碼可重用性的三個措施(下)

時間:2012-10-31 10:54 來源:弘智培訓

措施三:選擇最簡單的參數接口類型

在實施第二個措施時,應該選用哪一種接口類型來取代給定的類形式?答案是哪一個接口完全滿足 過程對參數的需求,同時又具有最少的多余代碼和數據。描述參數對象要求的接口越簡單,其他類實現該接口的機會就越大——由此,其對象能夠作為參數使用的類 也越多。從下面這個例子可以很容易地看出這一點:

以下是引用片段:
static public boolean areOverlapping(Window window1, Window window2) {...} 

這個方法用于檢查兩個窗口(假定是矩形窗口)是否重疊。如果這個方法只要求從參數獲得兩個窗口的矩形坐標,此時相應地簡化這兩個參數是一種更好的選擇:

以下是引用片段:
static public boolean areOverlapping(Rectangular rect1, Rectangular rect2) {...} 

上面的代碼假定Window類型實現了Rectangular接口。經過改動之后,對于任何矩形對象我們都可以重用該方法的功能。

有些時候可能會出現描述參數需求的接口擁有太多方法的情況。此時,我們應該在全局名稱空間中定義一個新的公共接口供其他面臨同一問題的代碼重用。

當我們需要象使用C語言中的函數指針一樣使用參數時,創建唯一的接口描述參數需求是好的選擇。例如,假設有下面這個過程:

以下是引用片段:
static public void sort(List list, SortComparison comp) {...} 
該方法運用參數中提供的比較對象comp,通過比較給定列表list中的對象排序list列表。sort對comp對象的唯一要求是要調用一個方法進行比較。因此,SortComparison應該是只帶有一個方法的接口:
以下是引用片段:
public interface SortComparison { 
boolean comesBefore(Object a, Object b); 
SortComparison接口的唯一目的在于為sort提供一個它所需功能的鉤子,因此SortComparison接口不能在其他地方重用。

總而言之,本文三個措施適合于改造現有的、按照面向對象慣例編寫的代碼。這三個措施與面向對象編程技術結合就得到了一種可在以后編寫代碼時使用的新式代碼編寫技術,它能夠簡化方法的復雜性和依賴關系,同時提高方法的可重用能力和內部凝聚力。

當然,這里的三個措施不能用于那些天生就不適合重用的代碼。不適合重用的代碼通常出現在應用的表現層。例如,創建程序用戶界面的代碼,以及聯結到輸入事件的控制代碼,都屬于那種在程序和程序之間千差萬別的代碼,這種代碼幾乎不可能重用。

主頁 | 我們介紹 | 我們課程 | 開課公告 | 無錫學歷培訓 | XML地圖
欧美三级电影,欧美大尺度电影
<menuitem id="jdrvb"><strike id="jdrvb"></strike></menuitem>
<cite id="jdrvb"></cite>
<cite id="jdrvb"></cite>
<var id="jdrvb"></var>
<cite id="jdrvb"></cite>
<var id="jdrvb"><video id="jdrvb"><menuitem id="jdrvb"></menuitem></video></var><var id="jdrvb"></var>
<cite id="jdrvb"></cite>
<var id="jdrvb"><video id="jdrvb"></video></var>
<cite id="jdrvb"></cite>
<ins id="jdrvb"><span id="jdrvb"><menuitem id="jdrvb"></menuitem></span></ins>