Sof*_*per 5 java oop object pojo
在大多数定义中,POJO(Plain Old Java Object)是具有属性和 getter/setter 的对象。有些人将这些命名为 DTO。所以基本上它们就是我喜欢称之为“数据类”的东西。无论名称是什么,我都知道有这些对象只有 getter/setter。这些通常用于开发多层 MVC Web 应用程序 - 这些对象将通过不同的层传递。
也许我的问题有点自以为是——但这是否是纯粹的面向对象编程?我决心找出这个问题的答案,即什么是对的,什么是错的?
...因为,我从小就了解到 OOP 就是通过交互将现实生活中的场景/情况建模为对象。对象本身封装了数据和作用于这些数据的行为。- 在我看来,只有 getter/setter 的对象不符合这个定义。
此外,数据类很糟糕(代码异味)——这就是我在大学里教过的。
小智 1
不存在纯粹的 OOP 这样的东西。多年来,人们使用面向对象的方式发生了变化。
我更倾向于向我的类型添加行为(https://en.wikipedia.org/wiki/Domain-driven_design)。如果将类型视为数据容器 (POJO),则需要将该行为放在某处。通常称为 xxxService。这是一个额外的间接级别,只是为了做一些可能是“POJO”核心业务的事情。
编写更多代码后,您最终可能会在其他地方需要此功能。现在您需要将其提取给您可以共享的某个助手。这意味着您将有 2 个服务调用作用于您的 POJO 的相同方法。添加了另一个间接级别。
但这是做到这一点的一种方法。我参与过相当多的项目,很多开发人员都对 setter/getter 感到更舒服。如果你的团队对 setter/getter 感觉更舒服,为什么不呢。它不会杀死这个项目,但你必须每天都看到它;)
| 归档时间: |
|
| 查看次数: |
2332 次 |
| 最近记录: |