【发布时间】:2009-11-10 00:52:26
【问题描述】:
进行了大约 30 分钟的搜索,找到了很多相关信息,但没有一个能解决这个特殊问题,希望我没有重复一个常见问题。
我想知道关于在域类型中实现与基础设施相关的接口的普遍共识是什么。我读到的关于 DDD 的所有内容都让我相信这是应该避免的,因为这有损模型的简洁性,这是可以理解的。
但是,我不确定如何解决这个问题。具体来说,我有一个非常适合在我的表示层中使用的域类型,除了我想在需要它实现 IComparable 的控件中显示它的实例。我宁愿不要用这个接口的实现来“污染”我的类型。
我认为(也许是天真的)我的选择是:
- 使用数据传输对象 (DTO),让它实现接口,并在我的 表示层。
- 我隐约 熟悉基础知识 AOP - 也许有一个合适的 这个领域的技术?
- 也许 与选项 2 相关 - 代码“编织”? 我很少知道为什么/何时 考虑一下,但我是不是在碰壁 现在反对吗?
- 咬紧牙关, 并实现一点代码 履行合同所需的时间。
- 我有一些巫术魔法 从未听说过?
如果有人愿意推荐 2、3 或 5 - 您能否指出一些可能有助于我入门的阅读材料的方向?
提前致谢。
【问题讨论】:
-
感谢大家的帮助,在考虑了我所有的选项(包括提供的其他选项)之后,我认为我对我的 Model 类的 ViewModel 变体最满意。我认为拥有一个唯一负责“视觉代表”模型类型的类型是明智的。如前所述,它的视觉职责可能(并且可能会)超出我目前实现界面的要求。
-
这是 WPF 使用的 MVC 变体;我还在常规 WinForms 应用程序中使用了此模型,以确保在影响视图之前将模型更改编组到主 GUI 线程(尽管还有其他解决方案)