从对象报告

本文关键字:报告 对象 | 更新日期: 2023-09-27 18:26:05

我正在重写一个紧密耦合的应用程序。数据模型存储在当前将所有对象公开为公共对象的类库中。有几个UI组件对各种对象进行操作。主窗口有一个例程,用于通过循环遍历存储在模型中的基类并根据对象类型添加相关页面来生成报告。

我的意图是实现工厂模式,这样UI只知道接口。然后,我会将模型中的对象保留为私有对象。但这意味着我必须将报告推送到模型中,并在编译报告的接口中公开一个GetPages()方法。每个具体对象将提供报告中各自的部分。

我宁愿模型不知道它是如何被报道的。我该怎么做?

从对象报告

您可以遵循DDD/messaging/event stream实践,并从域模型生成的事件流中生成任何可能的报告。它完全消除了模型和报告系统之间的耦合。我建议这样做。

否则,您将不得不将您的对象暴露给知道如何构建报告的对象。我不会把它作为UI的责任。您可以构建一些额外的逻辑(应用程序服务?),这些逻辑将"访问"您的模型,并生成一些可供UI用于报告的数据。但你知道,在这种情况下,你的模型和位于顶部的东西之间总是存在耦合,并出于报告目的对其进行询问。