栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

采集 与清单 您应该在界面上使用什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

采集 与清单 您应该在界面上使用什么?

要回答为什么不这样的问题的“为什么”部分

List<T>
,原因是面向未来和API简单。

面向未来

List<T>
不能通过子类化而易于扩展;它旨在快速实现内部实现。你会发现它的方法不是虚拟的,因此不能被覆盖,并且没有钩到其
Add
/
Insert
/
Remove
操作。

这意味着,如果您将来需要更改集合的行为(例如,拒绝人们尝试添加的空对象,或者在发生这种情况时执行其他工作,例如更新类状态),则需要更改类型在集合中,您可以返回一个可以子类化的类,这将是一个重大的接口更改(当然,更改诸如不允许null之类的语义也可能是接口更改,而诸如更新内部类状态之类的则不是)。

因此,通过返回,要么可以很容易的子类,如类

Collection<T>
或接口,例如
IList<T>
ICollection<T>
或者
IEnumerable<T>
你可以改变你的内部实现是一个不同的集合类型,以满足您的需求,而不破坏消费者的代码,因为它仍然可以为返回他们期望的类型。

API简单性

List<T>
包含许多有用的操作,例如
BinarySearch
Sort
等等。但是,如果您要公开的是一个集合,则很可能您控制列表的语义,而不是使用者的语义。因此,尽管您的班级内部可能需要这些操作,但是班级的使用者不太可能希望(甚至应该)调用它们。

这样,通过提供一个更简单的集合类或接口,可以减少API用户看到的成员数量,并使他们更易于使用。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/442691.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号