java - 关于私有(private)数组列表和其他此类结构的最佳实践

标签 java collections arraylist class-design

我有以下类(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/

相关文章:

java - 在ArrayList中,如果子目录的父目录已存在于列表中,如何删除子目录?

java - Java JVM 是否保证在调用 "wait"时会通知正确的 "notify"?

Java 无法及时收集垃圾

java - 无法在 mac os high sierra 中启动 uiautomatorviewer

java - 在具有多个参数的 ArrayList 中搜索

java - java中如何从Map中读取Arraylist的值

java - WorldWind Java API

java - 我的 LinkedList 的 set 方法有什么问题

javascript - 将两个数组转换为 JSON 对象

java - 数组列表排序