Java 类内的列表处理
假设我有一个a类,它有一个相关元素列表(不相关的元素类型): 如果有人能指出这些方法的任何优点,我们将不胜感激。Java 类内的列表处理,java,Java,假设我有一个a类,它有一个相关元素列表(不相关的元素类型): 如果有人能指出这些方法的任何优点,我们将不胜感激。 谢谢。我不会授予访问列表的权限(即getList()),但是您添加了一个addElement方法,这很好。这是一个好主意,因为您可以对在该方法中添加到列表中的东西进行限制。编码时,您应该考虑维护过程。班级间相互了解越少越好。 客户机应该只知道A可以有元素。。。。所以我认为第二个设计要好得多。一般来说,你的 GETList](方法)被认为是坏的风格。如果类A返回对其实际列表的引用,调
谢谢。我不会授予访问列表的权限(即getList()),但是您添加了一个addElement方法,这很好。这是一个好主意,因为您可以对在该方法中添加到列表中的东西进行限制。
编码时,您应该考虑维护过程。班级间相互了解越少越好。
客户机应该只知道A可以有元素。。。。所以我认为第二个设计要好得多。
一般来说,你的<代码> GETList](方法)被认为是坏的风格。如果类
A
返回对其实际列表的引用,调用方可能会调用该列表上的clear()
,或者向其中添加一百万个元素,谁知道这都是什么呢。最好只返回迭代器
,或者使用集合只返回列表
的只读视图。不可修改列表()
这意味着您的解决方案2,addElement()
更好;addElement()
方法可能包含用于验证添加元素、限制列表大小或其他内容的代码。而clear()
将无法访问。我会选择
public void method2() {
a.addElement("");
}
因为mantains将列表隐藏在A
中。当然,这取决于列表与A
的关联程度。如果只有A
的实例应该引用列表,那么这就是我的选择
另一个原因可能是放弃清单可能导致客户删除项目,您可能希望避免客户将列表视为他们自己的,这是代码< A<代码>,确保安全。P
否则列表不属于A
,应该从中删除。如果您的目的是真正公开列表,那么方法2
通常是一种更好的OOP样式。(因为使用method2
您将免费获得addAll
等。)
标准API中此模式的示例:
文档应该注意说,对象由返回的集合支持,因此修改将
缺点是,通过公开列表,您允许客户端执行删除
等操作,因此如果您的目的只是通过添加
收集项目,那么方法1
可能仍然是更好的选择
标准API中此模式的示例:
您应该非常明确地将底层列表隐藏在类A中。如果可能,A不应该提供getList()
方法
B类应专门使用a.addElement()
。如果B需要从A中的列表中读取,A应该提供访问列表的方法,而不是给B整个列表
OO编程的主要租户之一是。这意味着您应该隐藏类的底层实现,并抽象出底层信息
对于您的特定问题,您需要使用method2()
。您甚至不能使用a.getList()如果您遵循适当的OO原则,则从类B
。您应该提供在类a上添加元素的方法。从设计的角度来看,返回原始列表是错误的,因为您的类的用户可以完全访问它。方法2更好,因为客户端不需要为列出执行情况。如果class A更改其数据结构,则客户端不会受到影响。是的,这主要是我所想的。虽然从我的角度来看这是一个好主意,但在列表上使用只读视图。
public class Client {
private A a = new A();
public void method1() {
a.getList().add("");
}
public void method2() {
a.addElement("");
}
}
public void method2() {
a.addElement("");
}