【问题标题】:A good design pattern for documenting every operation [closed]用于记录每个操作的良好设计模式 [关闭]
【发布时间】:2014-01-28 00:11:57
【问题描述】:

记录或记录系统内部完成的每个操作(业务逻辑)的良好设计模式是什么?

假设我想写一个小日志或通知用户每个操作?例如,在系统中,您可以为您的房子订购清洁服务,我想在每个步骤之后给用户反馈:

已订购清洁服务>清洁正在进行中>清洁已完成

我在考虑观察者模式,但我有点困惑。谢谢。

【问题讨论】:

  • 观察者模式可以成为您设计的一部分,但我认为在每个 Y 之后执行 X 没有特殊的模式。这取决于您的代码以及您希望如何访问该日志(还是每个实体甚至超过 1 个?)。例如,您可以使用观察者模式将其设计得有点像控制台记录器(OperationLog.add(Something) -> 通知观察者 -> 观察者可以刷新日志并显示更新的数据)。
  • 你需要看看面向方面的编程(AOP)
  • 也许您正在寻找 Domain EventsEvent Sourcing

标签: java design-patterns domain-driven-design observer-pattern


【解决方案1】:

如果您希望每次 /something/ 发生时都记录下来,那么这就是所谓的横切关注点。我的意思是发生/超出正常操作/的事情-它无处不在。看看面向 Aspecxt 的编程 (AOP) - 日志记录是一个经典的 AOP 问题。 http://en.wikipedia.org/wiki/Aspect-oriented_programming 了解更多信息。

【讨论】:

    【解决方案2】:

    您想要的愿望被称为跨领域关注点。看看面向方面的编程。您可以编写在方法调用上执行的代码,您可以在其中根据语义 java 签名选择方法调用。

    这将使您的日志记录问题与您的业务逻辑问题分离。您应该在 AspectJ 文档中找到一些直接的示例。

    http://eclipse.org/aspectj/doc/released/progguide/starting-development.html#profiling-and-logging

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 2015-02-24
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-04
      相关资源
      最近更新 更多