<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • Java中類的設計技巧有哪些

    時間:2024-10-21 20:56:51 JAVA認證 我要投稿
    • 相關推薦

    Java中類的設計技巧有哪些

      在Java面向對象編程的過程中,類的設計是一個很有挑戰(zhàn)性的工作,不同的人可能對于類的理解不一樣,設計出來的類也可能不一樣,下文yjbys小編為大家分享的是關于java類的設計技巧,希望對大家學習java有幫助!

      1)一定將數(shù)據(jù)設計為私有。

      最重要的是:絕對不要破壞封裝性。有時候,需要編寫一個訪問器方法或更改器方法,但是最好還是保持實例域的私有性。很多慘痛的經(jīng)驗告訴我們,數(shù)據(jù)的表示形式很可能會改變,但它們的使用方式卻不會經(jīng)常發(fā)生變化。當數(shù)據(jù)保持私有時,它們的表示形式的變化不會對類的使用者產(chǎn)生影響,即使出現(xiàn)bug也易于檢測。

      2)一定要對數(shù)據(jù)初始化。

      Java不對局部變量進行初始化,但是會對對象的實例域進行初始化。最好不要依賴于系統(tǒng)的默認值,而是應該顯式地初始化所有的數(shù)據(jù),具體的初始化方式可以是提供默認值,也可以是在所有構造器中設置默認值。

      3)不要在類中使用過多的基本數(shù)據(jù)類型。

      就是說,用其他的類代替多個相關的基本數(shù)據(jù)類型的使用。這樣會使類更加易于理解且易于修改。例如,用一個稱為Address的新的類替換下面的Customer類中的實例域:

      private String street;

      private String city;

      private String state;

      private int zip;

      這樣,可以很容易地順應地址的變化,例如,需要增加對國際地址的處理。

      4)不是所有的域都需要獨立的域訪問器和域更改器。

      或許,需要獲得或設置雇員的薪金。而一旦構造了雇員對象,就應該禁止更改雇用日期,并且在對象中,常常包含一些不希望別人獲得或設置的實例域,例如,在Address類中,存放州縮寫的數(shù)組。

      5)使用標準格式進行類的定義。

      一定采用下面的順序書寫類的內(nèi)容:

      公有訪問特性部分

      包作用域訪問特性部分

      私有訪問特性部分

      在每一部分中,應該按照下列順序列出:

      實例方法

      靜態(tài)方法

      實例域

      靜態(tài)域

      畢竟,類的使用者對公有接口要比對私有的實現(xiàn)細節(jié)更感興趣,并且對方法要比對數(shù)據(jù)更感興趣。

      但是,哪一種風格更好并沒有達成共識。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;

      }

      實際上,這個類實現(xiàn)了兩個獨立的概念:一副牌(含有shuffle方法和draw方法)和一張牌(含有查看面值和花色的方法)。另外,引入一個表示單張牌的Card類。現(xiàn)在有兩個類,每個類完成自己的職責:

      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)類名和方法名要能夠體現(xiàn)它們的職責。

      與變量應該有一個能夠反映其含義的名字一樣,類也應該如此(在標準類庫中,也存在著一些含義不明確的例子,如:Date類實際上是一個用于描述時間的類)。

      命名類名的良好習慣是采用一個名詞(Order)、前面有形容詞修飾的名詞(RushOrder)或動名詞(有"-ing"后綴)修飾名詞(例如,BillingAddress)。對于方法來說,習慣是訪問器方法用小寫get開頭(getSalary),更改器方法用小寫的set開頭(setSalary)。

    【Java中類的設計技巧有哪些】相關文章:

    java中File類有哪些使用方法03-14

    平面設計技巧有哪些03-18

    海報設計技巧有哪些03-20

    演講中的控場技巧有哪些03-08

    2017編導類藝考技巧有哪些03-10

    平面設計學習技巧有哪些03-13

    兒童房間設計技巧有哪些03-15

    發(fā)面技巧有哪些03-29

    唱歌的技巧有哪些03-14

    主站蜘蛛池模板: 精品欧洲AV无码一区二区男男 | 国产精品欧美亚洲韩国日本不卡| 国产99久久久国产精品~~牛| 亚洲国产另类久久久精品黑人| 国产精品 羞羞答答在线| 国内精品久久人妻互换| 午夜国产精品无套| 91探花国产综合在线精品| 精品乱码久久久久久久| 亚洲成网777777国产精品| 国产精品欧美亚洲韩国日本久久| 国产精品一久久香蕉产线看| 亚洲AV午夜福利精品一区二区| 黑巨人与欧美精品一区 | 久久久久久国产精品无码下载| 国产一区二区精品久久| 亚洲精品无码久久久久久| 久久久久这里只有精品 | 国产一精品一AV一免费| 真实国产精品vr专区| 久久久精品波多野结衣| 国产精品男男视频一区二区三区| 国产在线精品一区二区不卡| 国内精品久久久久影院日本| 无码精品人妻一区二区三区免费看| 四虎精品免费永久免费视频| 精品久久久久久久中文字幕| 隔壁老王国产在线精品| 亚洲欧洲国产精品你懂的| 久久99久久99小草精品免视看| av国内精品久久久久影院| 久久99国内精品自在现线| 日产精品99久久久久久| 亚洲AV永久纯肉无码精品动漫| 无码囯产精品一区二区免费| 亚洲av永久无码精品秋霞电影影院 | AV无码精品一区二区三区| 国产精品免费高清在线观看| 国产精品无码久久综合| 97久久超碰成人精品网站| 2020国产精品|