我的问题很简单:我应该将我的Debug
课程创建为单身人士吗?
我知道the singleton pattern is a bad practice,但调试类不参与应用程序中的逻辑,它会使整个应用程序复杂化,将调试类注入每个类。
我的调试类将包含以下方法:
Debug::message();
Debug::dump();
Debug::spot(); // To create a timeline
// etc
还应该注意我使用the debugbar package,并且它只会出现在开发模式下,所以我的调试类将查看包是否存在,如果是,它会将信息传递给它否则,它将什么都不做(或者可能记录重要的事情)。
答案 0 :(得分:1)
好的,所以你想做静态调用以避免抛出调试类的实例。有道理。
如果你想使用静态调用,那么单例的替代方法是编写一个只包含静态属性/方法的类。
您是为此还是为单身人士做出决定非常简单:此类是否具有内部状态和/或是否需要构造函数?例如,如果您打开日志文件或实例化其他对象,您肯定需要单例。
Singleton不满意,are good reasons for this。但是仍然存在一些有意义的情况并且是一种有效的方法。
您提到要创建时间轴,所以我猜您需要初始化时间戳。你有一个dump
方法,所以我想你想收集某些信息以便以后转储它。这些东西通常是有状态的。
当然,你可以在每个公共方法的顶部调用某种Debug::init()
,但那会比单身人士更愚蠢。
所以,在你的具体情况下,我猜单身确实有意义。