我编写了我的应用程序(obj-c),并且创建了一个非常严格的类层次结构。 每个班级对其他班级以及这些班级如何管理他们的数据知之甚少。
现在我需要创建一个包含活动完整描述的日志文件,但由于没有类知道“完整”进程,因此没有类可以编写“完整”日志。
我正在寻找一种设计模式或最佳实践,以便在不分享大量细节的情况下在课堂之间共享信息。
我希望我的英语是可以理解的。
答案 0 :(得分:2)
我认为了解每个班级关于他人可能不适合你。这样,您的类将变得越来越依赖,这与许多设计原则相矛盾,并打破了代码的模块化。
我会为您的日志活动添加另一个模块,让您能够了解所有过程,为您提供有关日志记录的能力。这种方法简单易行,易于实现。此外,您可以查看Aspect Oriented Architecture和Aspect-oriented Programming,它可以让您分清切割问题(记录您的案例中的日志)。您应该查看AspectCocoa和AOP-in-Objective-C
答案 1 :(得分:0)
在Log4Net(http://logging.apache.org/log4net/release/features.html)
中实现的一些模式分层日志记录架构 分层日志记录非常适合基于组件的开发。每个组件都有自己的记录器。单独测试时,可以根据开发人员的要求设置这些记录器的属性。当与其他组件结合使用时,记录器将继承由组件的集成商确定的属性。可以选择性地提升一个组件上的日志记录优先级,而不会影响其他组件。当您需要来自单个组件的详细跟踪而不会将跟踪文件与来自其他组件的消息一起拥挤时,这非常有用。所有这些都可以通过配置文件来完成;不需要更改代码。
记录上下文 log4net可用于以对日志记录点开发人员透明的方式收集日志记录上下文数据。 GlobalContext和ThreadContext允许应用程序存储附加到日志消息的上下文数据。例如,在Web服务中,一旦调用者被认证,调用者的用户名就可以存储在ThreadContext属性中。然后,该属性将自动记录为从同一线程发出的每个后续日志消息的一部分。
答案 2 :(得分:0)
如何用日志装饰器包装每个类?