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

时间:2018-11-03 04:40:27

标签: oop design-patterns language-agnostic

罗伯特·马丁(Robert Martin)的Clean Code说:

  

对象隐藏   它们的数据在抽象之后隐藏,并公开对该数据进行操作的函数。数据结构   公开他们的数据,没有任何有意义的功能。

但是他也提到了:

  

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

和:

  

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

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

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

1 个答案:

答案 0 :(得分:0)

你误会了鲍伯叔叔的话。

  

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

否,应该是:分离数据结构和函数的优点是使函数添加更加容易。

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