0

我编写了我的应用程序(obj-c),并创建了一个非常严格的类层次结构。每个班级都对其他班级以及这些班级如何管理他们的数据知之甚少或一无所知。

现在我需要创建一个包含活动完整描述的日志文件,但是因为没有类知道“完整”过程,所以没有类可以写入“完整”日志。

我正在寻找一种设计模式或最佳实践来在类之间共享信息而不共享大量细节。

我希望我的英语是可以理解的。

4

3 回答 3

2

我认为了解每个班级对他人的了解可能对您来说不是一个好习惯。这样,您的类将变得越来越相互依赖,这与许多设计原则相矛盾并破坏了代码的模块化。

我会为您的日志活动添加另一个模块,让您能够了解所有过程,从而为您提供有关日志记录的能力。这种方法很容易实现,也很简单。此外,您可以查看Aspect Oriented ArchitectureAspect-oriented Programming,这使您能够分离交叉切割关注点(在您的情况下为日志)。你应该检查AspectCocoaAOP-in-Objective-C

于 2012-11-20T09:52:56.977 回答
0

用日志装饰器包装每个类怎么样?

于 2012-11-20T09:03:13.303 回答
0

在 Log4Net ( http://logging.apache.org/log4net/release/features.html )中实现的一些模式

分层日志架构 分层日志非常适合基于组件的开发。每个组件都有自己的记录器。在单独测试时,这些记录器的属性可以根据开发人员的需要进行设置。当与其他组件组合时,记录器会继承由组件的集成商确定的属性。可以选择性地提升一个组件上的日志记录优先级,而不会影响其他组件。当您需要来自单个组件的详细跟踪而不用来自其他组件的消息使跟踪文件拥挤时,这很有用。这一切都可以通过配置文件来完成;无需更改代码。

记录上下文 log4net 可用于以在记录点对开发人员透明的方式收集记录上下文数据。GlobalContext 和 ThreadContext 允许应用程序存储附加到日志消息的上下文数据。例如,在 Web 服务中,一旦调用者通过身份验证,调用者的用户名就可以存储在 ThreadContext 属性中。然后,此属性将作为从同一线程生成的每个后续日志消息的一部分自动记录。

于 2012-11-19T21:56:50.767 回答