design-patterns - 我是否可以应用特定的模式来收集多个操作的数据?

标签 design-patterns software-design

我正在尝试找出一种优雅的方法来收集信息,用于跨多个类的多个操作/方法调用的审计/历史记录目的。有人对如何收集这些数据有任何想法/意见吗?

对于我的具体示例,我需要与 Web 服务交互以同步两个系统之间的数据。这涉及几种不同的操作,这些操作可能会提供需要记录的有用信息。

为了下载数据,我需要;

  • 与网络服务通信以获取数据。
    • 要收集的数据
      • 网络服务查询的摘要信息(记录 ID、类型、上次更新时间等)
      • 有关 Web 服务调用期间引发的任何异常的信息。
      • 从网络服务检索数据(或异常)所需的时间(以秒为单位)
  • 通过本地验证规则验证接收到的数据
    • 要收集的数据
      • 验证错误。
      • 如果有效,则接收到的数据的 XML 表示形式和同一对象的本地表示形式。
  • 将验证的数据保存到本地数据库
    • 要收集的数据
      • 数据库调用期间的任何异常
  • 保存审核/历史记录,详细说明上面收集的所有信息。

在将信息上传到 Web 服务期间会存储类似类型的数据,我们会收集 Web 服务/数据库通信期间的异常、通过 FaultException 从 Web 服务收到的验证错误、Web 服务通信所花费的时间等。

对于我当前的解决方案,我当前创建了一个带有占位符的 AuditHistory 对象来存储各种信息,并将其传递给各种类方法并在每个方法调用期间填充它。最后,我只是保存这个审计历史对象。

它可以工作,但感觉又丑又笨重。

任何想法都会受到赞赏。

最佳答案

不完全是一种模式(更完整的范式转变),但对于您所描述的内容,您可能需要考虑 Aspect-Oriented Programming .

或者,如果您希望坚持使用 OO 范式,您可以尝试合并 Observer ,使您需要跟踪的所有内容都可观察,并让审计数据收集器观察它们。

关于design-patterns - 我是否可以应用特定的模式来收集多个操作的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6827176/

相关文章:

Java:notifyObservers不并发?

java - 向类添加方法而不破坏实现

c++ - boost::any 的用途?

c# - 数据访问对象模式如何提高性能?

c++ - 如何在恢复提交和保留单元测试的同时检查测试?

python - 如何比较两个表并确定要返回的特定类型的行?

java - 事件系统排序问题

python - 如何(惰性)从多个 python 模块加载相同的大数据集

java - 如何让黑莓手机的背景变黑?

image-processing - 具有用户图像标记的图像分类模型的特化