“访问器方法”的定义是什么?

2022-09-03 09:54:12

我一直在争论“访问器”这个词的用法(上下文是Java编程)。我倾向于认为访问器隐式是“属性访问器” - 也就是说,该术语意味着它或多或少地提供对对象内部状态的直接访问。另一方坚持认为,任何以任何方式接触对象状态的方法都是访问器。

我知道你们不能为我赢得争论,但我很好奇你们会如何定义这个词。:)


答案 1

通过访问器,我倾向于想到 getter 和 setter。

通过坚持所有接触对象内部状态的方法都是访问器,似乎任何实际使用对象状态的实例方法都是访问器,这似乎不对。哪种实例方法不使用对象的状态?换句话说,不以某种方式使用对象状态的实例方法不应该是一开始的实例方法,它应该是一个类方法

例如,是否应将 BigDecimal.add 方法视为访问器?该方法将读取调用该方法的实例的值,然后在将另一个 .实例方法既不是 getter 也不是 setter,这似乎相当简单。addBigIntegeradd


答案 2

访问器方法完全按照它在 tin 上所说的执行操作:从类型访问某些状态而不会产生副作用(除了延迟实例化,也许,这不是调用方通常知道的事情)。

private int _age;

public int getAge()
{
    return _age;
}

修改状态的方法(在我看来)作为突变体更有用。