自从我第一次开始学习面向对象编程以来,我一直在努力解决这个问题:如何在"正确的"OOP代码中实现记录器?
通过这个,我的意思是一个对象,它有一个方法,我们希望代码中的每个其他对象都能够访问; 这个方法将输出到console/file/whatever,我们将用于记录 - 因此,这个对象将是logger对象.
我们不想将logger对象建立为全局变量,因为全局变量很糟糕,对吧?但是我们也不希望在每个单个对象中调用的每个方法的参数中都传递logger对象.
在大学里,当我把它带到教授那里时,他实际上无法给我一个答案.我意识到实际上有可能实现此功能的包(例如Java).然而,我最终要寻找的是如何正确地以OOP方式实现这一点的知识.
您确实希望将记录器建立为全局变量,因为全局变量并不坏.至少,它们本身并不坏.记录器是正确使用全局可访问对象的一个很好的例子.如果您想了解更多信息,请阅读Singleton设计模式.