4 java collections class-design arraylist
我有以下课程,我正在争取如何实施.问题在于是否有一个私人收藏项目,在这种情况下是一个arraylist,aa成员.我很清楚,对于任何类成员都有getter和setter被认为是最佳实践,但在这种情况下,使用getter和setter需要重新实现(或者更确切地说是重复)大量的ArrayList功能.
示例类:
public class Email
{
private ArrayList<String> To;
private ArrayList<String> Cc;
private ArrayList<String> Bcc;
...
}
Run Code Online (Sandbox Code Playgroud)
我假设答案是我应该为这些数组实现getter和setter吗?在处理这种情况时,我有没有想过的方法?管理这些列表的简单方法是将私有修饰符设置为public并检查数组数据在调用方法时是否有效,但这是正确的吗?任何人都可以指出我的其他SO问题,设计模式等我应该考虑的方向吗?
我很清楚,对于任何班级成员来说,拥有吸气剂和制定者是最佳做法.
我不同意.只暴露你需要的东西!尝试用ADT(抽象数据类型)来思考.换句话说,从内部创建一个抽象层ArrayLists.任何使用你班级的人都不应该知道你在内部使用ArrayLists.除非绝对必要,否则你不应该为你提供吸气剂ArrayLists.如果您觉得需要这些,请考虑返回List并使用Collections.unmodifiableList()以防止通过getter进行修改.
实际上在那种情况下,我认为不提供直接的getter/setter组合会更好.
我宁愿通过以下方式接近它:
List<String>(在字段上使用接口的最佳做法.)ArrayList在构造函数中初始化一个空s.add,remove,hasTo/Cc/Bcc.通过这种方式,您可以使用其他功能来装饰每个集合,例如确保String包含有效的收件人信息.
public void addTo(String recipient){
// validate recipient
this.to.add(recipient);
}
public String removeTo(String recipient){
return this.to.remove(recipient);
}
public boolean hasTo(){
return this.to.size() > 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑
我忘了提到一个吸气剂是有意义的,因为你在处理电子邮件时需要它.但是看看另一个考虑回归不可修改的答案List.
| 归档时间: |
|
| 查看次数: |
3970 次 |
| 最近记录: |