Rol*_*lle 12 c++ oop design-patterns
我有一个主应用程序类,其中包含一个记录器,以及一些常规应用程序配置等.
现在我将显示许多GUI窗口等(将使用记录器和配置),我不想将记录器和配置传递给每个构造函数.
我已经看到了一些变体,比如在任何地方声明主类extern,但这并不是非常面向对象的.什么是使主类中的元素可供所有(或大多数)其他类访问的"标准"C++方法?
Bri*_*ndy 12
使用单例设计模式.
基本上,您返回一个对象的静态实例,并将其用于您的所有工作.
请参阅此链接,了解如何使用单例以及此stackoverflow链接,了解何时不应使用它
警告:单身模式涉及促进全球状态.全球国家有很多原因.
例如:单元测试.
如果您的记录器和配置足够抽象,那么将记录器和配置传递给所有构造函数并不是一件坏事.
单身人士将来可能成为一个问题.但它在项目开始时就像是一个正确的选择.你的选择.如果您的项目足够小 - 请使用单身人士.如果不是 - 依赖注入.
为什么不使用已经存在的系统?也就是说,将std :: clog重定向到输出到文件并写入std :: clog.
std::fstream *f = new std::fstream("./my_logfile.log")
std::clog.rdbuf(f->rdbuf());
std::clog << "Line of log information" << std::endl;
Run Code Online (Sandbox Code Playgroud)