创建类的接口是防止访问同一类的 setter 的方法吗?

问题描述 投票:0回答:1

假设我有类

User
,其属性为
name
email
等。在我的代码中,我仍然希望能够更新该信息,但我不希望任何人能够访问直接设置方法。

public class User implements UserOperations {

    private String name;

    public User(String name) {
        this.name = name
    }
 
    public String getName() {
        return name 
    }
 
    public void setName(String name) {
        this.name;
    }
}
public interface UserOperations {

     String getName();
}

创建仅包含 getters 方法的接口是一个好主意吗?或者我应该将用户方法的访问功能从

public
更改为
private
protected

我尝试实现该接口,但我觉得这不是最好的解决方案。

java methods encapsulation
1个回答
0
投票

坚实的原则是解决您问题的关键答案。 在某种程度上,您希望将管理状态和管理操作的逻辑分开,您应该创建更多的类。

这是可能的解决方案: 你的班级 User 现在是 pojo。使 User不可变 将无法更改此类的对象。

要对对象执行更改,您需要创建一个具有新内部状态的新对象。通常,它会使用其他一些类作为外观来完成,它将执行所需的操作并返回新对象。

实际上你需要一些类UserOperationManager 它将处理对对象的所有必需访问

这种方法将涵盖单一责任和接口隔离原则

© www.soinside.com 2019 - 2024. All rights reserved.