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

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

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

本文介紹了三種修改現有代碼提高其可重用性的方法,它們分別是:改寫類的實例方法,把參數類型改成接口,選擇最簡單的參數接口類型。

措施一:改寫類的實例方法

通過類繼承實現代碼重用不是精確的代碼重用技術,因此它并不是最理想的代碼重用機制。換句話 說,如果不繼承整個類的所有方法和數據成員,我們無法重用該類里面的單個方法。繼承總是帶來一些多余的方法和數據成員,它們總是使得重用類里面某個方法的 代碼復雜化。另外,派生類對父類的依賴關系也使得代碼進一步復雜化:對父類的改動可能影響子類;修改父類或者子類中的任意一個類時,我們很難記得哪一個方 法被子類覆蓋、哪一個方法沒有被子類覆蓋;最后,子類中的覆蓋方法是否要調用父類中的對應方法有時并不顯而易見。

任何方法,只要它執行的是某個單一概念的任務,就其本身而言,它就應該是首選的可重用代碼。 為了重用這種代碼,我們必須回歸到面向過程的編程模式,把類的實例方法移出成為全局性的過程。為了提高這種過程的可重用性,過程代碼應該象靜態工具方法一 樣編寫:它只能使用自己的輸入參數,只能調用其他全局性的過程,不能使用任何非局部的變量。這種對外部依賴關系的限制簡化了過程的應用,使得過程能夠方便 地用于任何地方。當然,由于這種組織方式總是使得代碼具有更清晰的結構,即使是不考慮重用性的代碼也同樣能夠從中獲益。

在Java中,方法不能脫離類而單獨存在。為此,我們可以把相關的過程組織成為獨立的類,并把這些過程定義為公用靜態方法。

例如,對于下面這個類:

以下是引用片段:
class Polygon { 


public int getPerimeter() {...} 
public boolean isConvex() {...} 
public boolean containsPoint(Point p) {...} 


我們可以把它改寫成:
以下是引用片段:
class Polygon { 


public int getPerimeter() {return pPolygon.computePerimeter(this);} 
public boolean isConvex() {return pPolygon.isConvex(this);} 
public boolean containsPoint(Point p) {return pPolygon.containsPoint(this, p);} 

其中,pPolygon是: 以下是引用片段:
class pPolygon { 
static public int computePerimeter(Polygon polygon) {...} 
static public boolean isConvex(Polygon polygon) {...} 
static public boolean 
containsPoint(Polygon polygon, Point p) {...} 
}
主頁 | 我們介紹 | 我們課程 | 開課公告 | 無錫學歷培訓 | XML地圖
欧美Av无码高清在线_岛国在线无码高清视频_无码国模国产在线观看_第一福利在线永久视频
<var id="xrdpp"><strike id="xrdpp"><listing id="xrdpp"></listing></strike></var>
<cite id="xrdpp"><video id="xrdpp"></video></cite><var id="xrdpp"><video id="xrdpp"><thead id="xrdpp"></thead></video></var>
<cite id="xrdpp"><video id="xrdpp"><menuitem id="xrdpp"></menuitem></video></cite><var id="xrdpp"></var>
<var id="xrdpp"><strike id="xrdpp"><listing id="xrdpp"></listing></strike></var>
<cite id="xrdpp"><video id="xrdpp"><var id="xrdpp"></var></video></cite>
<var id="xrdpp"></var>
<cite id="xrdpp"><video id="xrdpp"></video></cite>
<var id="xrdpp"><video id="xrdpp"><thead id="xrdpp"></thead></video></var>