单例的使用
场景一:
分析:
场景一不宜用单例模式。因为三个源文件中可能同时需要存储数据,如果使用单例意味着程序中只有一个数据存储类对象不能满足三个地方同时做数据存储的需求。所以不能 用单例。
场景二需要用单例。因为程序中只有一个配置文件读取类对象能够保证程序中任意地方任意时刻使用配置文件中内容都能与当前配置文件中内容保持一致。假如zb.cpp和 ck.cpp同时保存两个配置文件读取类对象config1和config2。程序启动前两个对象分别读取了配置文件信息存储对象中。运行过程中zb.cpp对config1中的内容作了修改(也就 是对配置文件做了修改)。但是ck.cpp中的config2中的内容并没有发生变化,这样造成了config2中内容与当前配置文件不同步的问题。
场景一:
一个程序中有一个数据存储类,头文件和源文件分别为db.h和db.cpp。而程序中有三个线程同时往三个地方例如zb.cpp、ck.cpp、yk.cpp发送数据,而收到数据的本地需要存 储数据。
场景二:一个配置文件中存有ip地址和端口号,程序中有一个读取配置文件类config.h和config.cpp,有两个地方zb.cpp、ck.cpp需要在程序启动时加载这个配置文件获取文件中的 内容,程序运行过程中对配置文件信息的使用都要与当前配置文件保持同步。分析:
场景一不宜用单例模式。因为三个源文件中可能同时需要存储数据,如果使用单例意味着程序中只有一个数据存储类对象不能满足三个地方同时做数据存储的需求。所以不能 用单例。
场景二需要用单例。因为程序中只有一个配置文件读取类对象能够保证程序中任意地方任意时刻使用配置文件中内容都能与当前配置文件中内容保持一致。假如zb.cpp和 ck.cpp同时保存两个配置文件读取类对象config1和config2。程序启动前两个对象分别读取了配置文件信息存储对象中。运行过程中zb.cpp对config1中的内容作了修改(也就 是对配置文件做了修改)。但是ck.cpp中的config2中的内容并没有发生变化,这样造成了config2中内容与当前配置文件不同步的问题。