2017-07-25 41 views
2

有時您需要由多個值組成的值,但底層值也可以更改。行爲與類字段類似的方法

在用Java編寫的角色扮演遊戲有可能是代表玩家的類。他可以擁有「生活」和「耐力」的領域。最後一場可以增加玩家的生命。所以我們有「生命」和生命增加的屬性「耐力」,導致總體或完整的生活。

我會寫這樣的事情:

public class Player 
{ 
    private int life; 
    private int endurance; 
    private int life_total() 
    { 
     return life + endurance; 
    } 

    public Player() 
    { 
     life = 10; 
     endurance = 2; 
    } 

    public int get_life_total() 
    { 
     return life_total() 
    } 
} 

我會寫一個看起來像場支架和行爲像場的方法。這是一個可以接受的解決方案,還是有更好的解決方案?

在具有像javascript這樣的函數引用的語言中,使用這樣的函數引用來返回組合值是否可以接受?

+3

爲什麼不直接使用'public getLifeTotal(){return life + endurance; }'?這種額外的私人方法是沒有意義的。 – Tom

+0

對於你的例子,這會很好。但是你不需要額外的私人方法。只需返回兩個字段的總和即可。 – mumpitz

+0

因爲當你按照我展示的方式編寫它時,更明顯的是,這是一個玩家的價值,你也可以更快地看到玩家有這​​種價值,而不僅僅是像其他人一樣的方法。因爲通常你只使用getter作爲真實類字段的返回方法,而不是其他的東西或者沒有真正的類字段的值,我想。 –

回答

1

你的getter方法應該看起來更像這樣。沒有理由讓你的getter方法調用另一個方法來獲取你的變量。

public int get_life_total(){ 
    return life + endurance; 
}