繁体   English   中英

为什么有时我们有时更喜欢具有数据结构而不是对象?

[英]Why do we sometimes prefer having data structures over objects?

正如罗伯特·马丁(Robert Martin)的《 清洁法》所说:

对象将其数据隐藏在抽象后面,并公开对该数据进行操作的函数。 数据结构公开其数据,并且没有有意义的功能。

但他也提到:

程序代码(使用数据结构的代码)使添加新功能变得容易,而无需更改现有数据结构。 另一方面,使用OO代码,可以轻松添加新类而不更改现有功能。

和:

...这样的混合体很难添加新功能,但是也很难添加新的数据结构。 他们是两全其美的。 避免创建它们。

上面的混合表示数据结构和对象之间的混合。

但是,似乎数据结构存在冲突:使用数据结构的优点是可以更轻松地添加函数,但是对于数据结构,我们最好不要在其中添加函数。 那么拥有数据结构的意义何在? 例如DTO(数据传输对象)是使用数据结构而非使用对象的示例之一。 最好不要在吸气剂中添加很多逻辑,这始终是一个好习惯。 - 但为什么?

你误会了鲍伯叔叔的话。

使用数据结构的优点是可以更轻松地添加功能

不,应该这样: 分离数据结构和功能的优点是使添加功能更加容易。

当数据结构和功能分开时,您可以添加新功能而不会破坏旧功能。 相反,当将数据结构和功能捆绑到单元(如OOP中的类)时,添加新功能(方法)将破坏所有旧单元/类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM