对于将List作为第一个参数的集合中的所有方法,为什么这些方法不仅仅是List接口的一部分?
我的直觉是:给定一个List对象,该对象本身应"知道"如何对自身的操作执行,如rotate(),shuffle()或reverse().但相反,作为一名Java程序员,我必须检查List接口中的方法,以及Collections类中"在那里"的静态方法,以确保我使用规范解决方案.
为什么有些方法作为静态独立方法放在Collections类中,而不是添加到List接口(并且可能因此由某些现有或可能的基类实现)?
我正在努力更好地理解Java集合框架背后的设计决策.
这里有一些令人信服的OO设计原则,我忽略了吗?或者仅仅出于某些实际的性能原因,这种区别是否已经完成
关键是,给定合适的基本操作(删除,设置等),可以实现一组更高级别的操作(排序,随机,二进制搜索),而不是由每个列表实现实现.
实际上,java.util.Collections就像.NET的Enumerable类 - 充满了可以在任何集合上工作的通用方法,因此它们可以共享单个实现并避免重复.
Java的作者可能会以非常不同的方式做事,因为他们对API的多年使用有后见之明和前瞻性.这就是说C#IList界面与Java非常相似,而C#的作者确实有这种观点.
| 归档时间: |
|
| 查看次数: |
1533 次 |
| 最近记录: |