【发布时间】:2017-07-25 16:39:41
【问题描述】:
有时您需要由不止一个值组成的值,但基础值也可以更改。
示例
在用 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 这样具有函数引用的语言中,是否可以使用此类函数引用来返回组合值?
【问题讨论】:
-
你为什么不直接使用
public getLifeTotal() { return life + endurance; }?那个额外的私有方法没有意义。 -
对于您的示例,这很好。但是您不需要额外的私有方法。只需返回两个字段的总和。
-
因为当你按照我展示的方式编写它时,更明显的是这是一个球员的价值,你也可以更快地看到球员的这种价值,而不仅仅是一个方法和其他人一样。因为通常你只使用 getter 作为真实类字段的返回方法,而不是其他东西或不是真实类字段的值,我认为。
-
@Tom 您缺少返回类型(与 OP 一样)
-
"Because normally you use getters only as return methods for real class fields, not for other stuff."-- 谁说的?属性通常是计算出来的。