文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
3.5 不同形式的数据抽象
Cook 的论文更深入地讨论了此类数据抽象之间的比较,不可不看!
ADT 和对象是不同形式的数据抽象,各有优劣。
ADT 的表示类型是私有的,无法篡改或扩展。这对推理(分析)和优化来说是好的。但它(同时)只允许一种表示。
对象拥有行为接口,因此可以随时定义新的实现。这对灵活性和可扩展性来说是好的。但这使得分析代码变得困难,并且使某些优化成为不可能。
这两种抽象形式也支持不同形式的模块化扩展。在 ADT 上可以模块化地添加新操作,但是支持新的数据变体就很麻烦。面向对象的系统可以模块化地添加新的表示法,但添加新的操作意味着大量的修改。
有一些方法可以绕开此折衷。比如说,在对象的接口中可以公开某些实现细节。这会牺牲一些可扩展性,但恢复某些优化的可能性。所以,这里根本的问题是设计上的问题:我们究竟需要什么?
现在你可以明白,为什么许多语言(同时)支持这两种数据抽象。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论