【问题标题】:Service and DAO method parameters服务和 DAO 方法参数
【发布时间】:2012-03-06 16:07:11
【问题描述】:

我有一个 DAO 接口来获取数据库的对象:

List<MyObject> find(String id)

在我的服务中,我需要使用来自配置和/或其他 DAO 的附加字段来扩展此对象。

List<MyObjectEx> find(String id)

MyObject 和 MyObjectEx 应该如何相互关联。派生、聚合、字段映射、其他 ? (我也可以想象让 DAO 返回部分 MyObjectEx 实例)

谢谢!

【问题讨论】:

  • 如果可能,创建一个合成。我会建议不要在其他人中使用 VO——一张桌子,一个 VO 让生活保持理智。
  • MyObject 会发生什么?会在某处使用吗?
  • 可能在您的服务中 impl 可以做到这一点。一旦您收到 DAO 对MyObject 的响应,请在同一服务实现函数中配置其他字段或其他 DAO。
  • @DerMike MyObject 不会在服务接口中公开,但它可能仍然存在于 DAO 实现的缓存中。

标签: java design-patterns dao


【解决方案1】:
  1. 它可能不是派生,因为 MyObjectEx 不是 我的对象。相反,它是一种不同类型的对象,其中包含 MyObject 中存在的属性。但是如果 MyObjectEx 可以用于 需要 MyObject 的地方,然后我们可以将它们保持在相同的位置 层次结构。
  2. 您可以使用适配器模式,但我认为它不合适 因为这并不是真正意义上的对象转换。
  3. 此外,我们可以考虑聚合,然后是 MyObjectEx 和 MyObject 将无法相互替换,即 第 1 点将丢失。

【讨论】:

    猜你喜欢
    • 2012-01-06
    • 2013-05-27
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多