【发布时间】:2014-01-03 15:37:25
【问题描述】:
我目前正在尝试了解如何开发 DDD 类,而对可能需要使用它们的实现没有任何假设。我设法开发了一个小结构,由一个名为 User 的用户对象组成,它实现了一个 IUser 接口,因此我可以保持有效的抽象以供重用。
我现在想在一个具体的实现中使用这个用户对象,在我的例子中使用 Symfony2。为了从 Symfony 安全层中受益,我的用户对象需要实现 Symfony 提供的UserInterface 接口。
如果我正确理解了这个模式,这将是一个很好的机会来实现一个名为UserAdapter 的适配器,它可以让我的用户类与 Symfony 一起工作。到目前为止一切顺利,这工作得很好。但这是我的问题:
假设我在我的 DDD 库中添加了一个 Comment 类,它有一个 $user 属性。要将用户绑定到评论,我使用例如 setUser() 设置器,它需要任何实现 IUser 接口的东西。如果明天我想更改在此上下文中使用的用户类,我只需要一个实现IUser 接口的新用户类。
但在我的具体实现中,例如在 Symfony 控制器中,我使用了 UserAdapter 类的实例,它实现了 Symfony UserInterface 接口。在我的Comment 对象上调用setUser() 设置器时,接口不匹配。
我错过了什么?
我是否以错误的方式使用了适配器模式,我应该在我的实现中使用不同的策略吗?
【问题讨论】:
标签: php symfony design-patterns domain-driven-design adapter