我有以下类(class),我正在为如何实现而争论不休。问题是拥有一个私有(private)集合项是否有意义,在本例中是一个数组列表,一个成员。我很清楚为任何类成员提供 getter 和 setter 被认为是最佳实践,但在这种情况下,拥有 getter 和 setter 将需要重新实现(或更确切地说是复制)大量 ArrayList 功能。
示例类:
public class Email
{
private ArrayList<String> To;
private ArrayList<String> Cc;
private ArrayList<String> Bcc;
...
}
我假设答案是我确实应该为这些数组实现 getter 和 setter?关于处理这种情况,有什么我没有想到的方法吗?管理这些列表的简单解决方案是将 private 修饰符设置为 public 并检查数组数据在调用方法时是否有效,但这是正确的吗?谁能指出我应该考虑的其他 SO 问题、设计模式等方向?
最佳答案
I am well aware it is considered best practice to have getters and setters for any class members.
我不同意。只暴露你需要的东西!尝试从 ADT(抽象数据类型)的角度思考。换句话说,从内部ArrayLists
创建一个抽象层。使用您的类的任何人都不应知道您在内部使用 ArrayLists
。除非绝对必要,否则不应为您的 ArrayLists
提供 getter。如果您觉得需要这些,请考虑返回一个 List
并使用 Collections.unmodifiableList()
以防止通过 getter 进行修改。
关于java - 关于私有(private)数组列表和其他此类结构的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3543771/