Java中類的設計技巧有哪些
在Java面向對象編程的過程中,類的設計是一個很有挑戰性的工作,不同的人可能對於類的理解不一樣,設計出來的類也可能不一樣,下文yjbys小編為大家分享的是關於java類的設計技巧,希望對大家學習java有幫助!
1)一定將數據設計為私有。
最重要的是:絕對不要破壞封裝性。有時候,需要編寫一個訪問器方法或更改器方法,但是最好還是保持實例域的私有性。很多慘痛的經驗告訴我們,數據的表示形式很可能會改變,但它們的使用方式卻不會經常發生變化。當數據保持私有時,它們的表示形式的變化不會對類的使用者產生影響,即使出現bug也易於檢測。
2)一定要對數據初始化。
Java不對局部變量進行初始化,但是會對對象的實例域進行初始化。最好不要依賴於系統的默認值,而是應該顯式地初始化所有的數據,具體的初始化方式可以是提供默認值,也可以是在所有構造器中設置默認值。
3)不要在類中使用過多的基本數據類型。
就是説,用其他的類代替多個相關的基本數據類型的使用。這樣會使類更加易於理解且易於修改。例如,用一個稱為Address的新的類替換下面的Customer類中的實例域:
private String street;
private String city;
private String state;
private int zip;
這樣,可以很容易地順應地址的變化,例如,需要增加對國際地址的處理。
4)不是所有的域都需要獨立的域訪問器和域更改器。
或許,需要獲得或設置僱員的薪金。而一旦構造了僱員對象,就應該禁止更改僱用日期,並且在對象中,常常包含一些不希望別人獲得或設置的'實例域,例如,在Address類中,存放州縮寫的數組。
5)使用標準格式進行類的定義。
一定採用下面的順序書寫類的內容:
公有訪問特性部分
包作用域訪問特性部分
私有訪問特性部分
在每一部分中,應該按照下列順序列出:
實例方法
靜態方法
實例域
靜態域
畢竟,類的使用者對公有接口要比對私有的實現細節更感興趣,並且對方法要比對數據更感興趣。
但是,哪一種風格更好並沒有達成共識。Sun的程序設計風格建議Java程序設計語言先書寫域,後書寫方法。無論採用哪種風格,重要的一點是要保持一致。
6)將職責過多的類進行分解。
這樣説似乎有點含糊不清,究竟多少算是"過多"?每個人的看法不同。但是,如果明顯地可以將一個複雜的類分解成兩個更為簡單的類,就應該將其分解(但另一方面,也不要走極端。設計10個類,每個類只有一個方法,顯然也太小了)。
下面是一個反面的設計示例。
public class CardDeck// bad design
{
public CardDeck(){…}
public void shuffile(){…}
public void draw(){…}
public int getTopValue(){}
public int getTopSuit(){}
private int[] value;
private int[] suit;
}
實際上,這個類實現了兩個獨立的概念:一副牌(含有shuffle方法和draw方法)和一張牌(含有查看面值和花色的方法)。另外,引入一個表示單張牌的Card類。現在有兩個類,每個類完成自己的職責:
public class CardDeck// better design
{
public CardDeck(){…}
public void shuffile(){…}
public void draw(){…}
public int getTopValue(){}
public int getTopSuit(){}
private Card[] cards;
}
public class Card {
public Card(int value,int aSuit){}
public int getTopValue(){}
public int getTopSuit(){}
private int value;
private int suit;
}
7)類名和方法名要能夠體現它們的職責。
與變量應該有一個能夠反映其含義的名字一樣,類也應該如此(在標準類庫中,也存在着一些含義不明確的例子,如:Date類實際上是一個用於描述時間的類)。
命名類名的良好習慣是採用一個名詞(Order)、前面有形容詞修飾的名詞(RushOrder)或動名詞(有"-ing"後綴)修飾名詞(例如,BillingAddress)。對於方法來説,習慣是訪問器方法用小寫get開頭(getSalary),更改器方法用小寫的set開頭(setSalary)。
-
java有哪幾種認證
Sun認證Java程序員考試內容涉及Java所有相關知識、編程概念及applet開發技巧。以下是小編整理的關於java的認證種類,希望大家認真閲讀!Java程序員認證一、怎樣可以獲得Sun公司的Java認證?如果你希望取得Sun公司Java認證,那麼必須通過Java程序員(SCJP)的考試。授...
-
熱部署javaweb應用程序的方法
對於Java應用程序來説,熱部署就是在運行時更新Java類文件。在基於Java的應用服務器實現熱部署的過程中,類裝入器扮演着重要的角色。大多數基於Java的應用服務器,包括EJB服務器和Servlet容器,都支持熱部署。類裝入器不能重新裝入一個已經裝入的類,但只要使用一個新的...
-
Spring創建Bean過程的方法
1.beans包提供了以編程方式管理和操作bean的基本功能,而context包增加了ApplicationContext,它以一種更加面向框架的方式增強了BeanFactory的功能。2.context包的基礎是位於ext包中的ApplicationContext接口。它是由BeanFactory接口派生而來的,提供了BeanFactory...
-
2016年java編譯命令詳解
最近小編重新複習了一下java基礎,這裏便講講對於一個類文件如何編譯、運行、反編譯的。也讓自己加深一下印象如題,首先我們在桌面,開始->運行->鍵入cmd回車,進入windows命令行。進入如圖所示的畫面:可知,當前默認目錄為C盤Users文件夾下的Administrator文件夾。一般...