早些时候,当我看到Alan Kay的以下引用时,我正在阅读一篇文章:
“许多所谓的面向对象的语言都有设置器,当你在一个对象上有一个设置器时,你就把它变成了一个数据结构。”
文章继续暗示这不是最佳实践,从长远来看可能会损害您开发的应用程序。
我是一名 CompSci 学生,具有 C、Java、PHP、Ruby 等方面的经验……所以我对 OOP 作为一个概念和实践相当熟悉,但绝不是专家。
我想我的问题归结为:
在编写 OO 程序时,访问字段值(使用 getter)然后根据修改后的值创建新对象,而不是使用 setter 方法来简单地调整该对象的字段,这在语义上是否正确(并且是最佳实践的问题)。
或者,如果有一块木头,然后我从原件上切下一些木头,我应该将其建模为质量较小的同一块,还是完全是一个新块。
使用 setter 似乎更简洁,如果您要创建如此多的对象,垃圾收集将是一个问题,所以我从理论而非实际的角度来处理这个问题。
提前感谢您的回答!