Web 框架似乎总是偏离良好的 OO 代码(您将代码和数据组合在一个对象中,考虑向该对象发送消息等)
主要问题似乎是bean模式的存在。您使用 bean 模式(现在通常称为 POJO,因为人们似乎不了解其中的区别)与数据库、Web 服务和大多数其他事物进行交互。
所以,不,你会被这个没有代码的 setter 和 getter 所困——所以你倾向于添加一堆——本质上是静态函数来操作这些东西。OO 代码的几乎所有优点都消失了。
我看到了我正在考虑的三个解决方案,但想知道其中任何一个是否有任何严重的缺点。
1) 使用 POJO 模式而不是 bean 模式。这意味着从您的 POJO 中消除 setter 和 getter(这样您就可以拥有封装/数据安全),而是添加业务逻辑方法。这似乎是最有意义的——事实上,我认为这就是为什么像 hibernate 这样的库从需要 Bean 转为允许 POJO 的原因,但似乎每个人仍然使用 bean 模式。
2) 使用业务逻辑类扩展您的 Bean,该业务逻辑类使用 bean 的字段作为存储。这似乎很不稳定且有问题,但是很容易将其放入现有的代码库中作为迁移的一种方式...
3) 用业务逻辑对象包装 Bean 模式对象。大多数情况下,如果#1确实有问题,我认为这可能是必要的。
我最想知道的是为什么我从未见过#1 被使用过。我真的很想听听任何使用 Pojo 模式(有业务逻辑,没有 setter 和 getter)来处理休眠对象并且遇到问题(或者让它工作得很好)的人......