This question already has answers here:
Using getters within class methods

(6个答案)


7年前关闭。




在Java类中,使用成员的getter和setter访问成员字段是好是坏做法?

例如哪个更好:
public Order {
    private Agreement agreement;

    public Agreement getAgreement() {
    return agreement;
    }

    public void process() {
       //should I use:
       getAgreement().doSomething();
       //Or:
       agreement.doSomething();
    }
}

总的来说,由于KISS原则,我认为直接访问该字段是最好的方法,而且以后有人可能会覆盖get方法,但结果却无法预测。

但是,我的同事认为,最好保留抽象层。对此有共识吗?

最佳答案

这里的核心问题是直接字段访问不符合子类重写方法,AOP,动态代理等的拦截条件。根据情况,这可能是好事,也可能是坏事。我要说的是,在内部使用getter和setter并不是反模式或模式。根据情况和类(class)的设计,这是好事还是坏事。

08-27 15:06