<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: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地圖
欧美三级电影,欧美大尺度电影
<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>