我一直在讨论"访问者"这个词的用法(上下文是Java编程).我倾向于认为访问器隐含地是"属性访问器" - 也就是说,该术语暗示它或多或少地提供对对象内部状态的直接访问.另一方坚持认为任何以任何方式触及对象状态的方法都是访问者.
我知道你们不能为我赢得这个论点,但我很想知道如何定义这个词.:)
通过访问者,我倾向于考虑getter和setter.
通过坚持所有触及对象内部状态的方法都是访问器,似乎任何实际使用对象状态的实例方法都是一个访问器,而这似乎不对.什么样的实例方法不会使用对象的状态?换句话说,不以某种方式使用对象状态的实例方法不应该是一个开头的实例方法 - 它应该是一个类方法.
例如,该BigDecimal.add
方法应该被视为访问者吗?它是一个方法,它将读取add
调用该方法的实例的值,然后在添加另一个的值后返回结果BigInteger
.add
实例方法不是getter也不是setter 似乎相当直接.
一个访问器方法完全按照它在tin上所说的那样:从没有副作用的类型访问某些状态(除了懒惰的实例化,也许,这不是调用者通常知道的事情).
private int _age; public int getAge() { return _age; }
修改状态的方法更有用(在我看来)作为mutators.