首页 > 其他分享 >配置文件加载模块-单例配置类设计

配置文件加载模块-单例配置类设计

时间:2023-09-09 10:02:16浏览次数:42  
标签:std string 配置文件 获取 单例 Config 加载

class Config{ 有我们单例模式所需要的一些信息,首先向外提供一个统一的访问接口,然后在类内实例化一个访问对象 //使用的是懒汉模式,涉及到线程安全问题,用的时候才去进行加载,所以要加锁 private: static std::mutex _mutex;//互斥锁,来保护对象实例化的一个过程 Config* _instance;//句柄,句柄通常命名都是_instance

private: int _hot_time;//热点判断时间 int _server_port;//服务器监听端口 std::string _download_prefix;//下载的url前缀路径 std::string _packfile_suffix;//压缩包后缀名称 std::string _back_dir;//文件下载的备份路径,备份文件的存放目录 std::string _pack_dir;//压缩包存放目录 std::string _server_ip;//服务器的ip地址 std::string _backup_file;//数据信息存放文件 //上面的成员变量都是私有成员变量,所以要提供公有接口来进行访问 public: static Config* GetInstance();//提供一个接口返回句柄 //提供获取数据的接口,都在单例类里面进行控制访问 当发生改变的时候只需要修改单例类里面的信息就可以了 int GetHotTime();//获取热点时间 int GetServerPort();//获取服务器端口 std::string GetDownloadPrefix();//获取url的前缀路径 std::string GetPackFileSuffix();//获取压缩包的后缀信息 std::string GetBackDir();//获取文件路径 std::string GetPackDir();//获取压缩包存放目录 std::string GetServerIp();//获取服务器的ip地址 std::string GetBackupFile();//存储文件信息的路径名

当我们有了上面的成员函数之后只需要使用单例类的对象来调用对应的接口就可以获取到其中的数据了
那所有的数据是从哪里来的呢?咱们是从配置文件里面去加载的,所以在构造函数里面还有一个非常关键的信息,即构造函数私有化
一个类只能实例化一个对象,并且在构造函数类加载配置文件读取配置文件当中的数据进行解析,将数据存放到私有成员里面

private: Config() { } }

标签:std,string,配置文件,获取,单例,Config,加载
From: https://blog.51cto.com/u_15562309/7417633

相关文章

  • 简单梳理java中的类加载
    一、类加载器简介java中自带的类加载器可以分为根类加载器(BootStrapclassloader),扩展类加载器,应用类加载器,这三个都不是用java语言实现的。其中根类加载器和扩展类加载器用来加载java自带的一些类,而应用类加载器用来加载我们自己写的java类编译后的class文件,也就是classpath......
  • Palo Alto防火墙---安全配置文件篇
    老板:楼小楼,据某员工反映他的邮箱自动向其他人发送了一些邮件,这个员工的邮箱密码只有他自己知道,并没有告诉给任何人。楼小楼:老板,这种情况一般是他的邮箱被人暴力破-解了,并且如果不采取措施,那么其他人的邮箱也有被暴力破-解的可能!老板:什么?有这么严重?楼小楼:当然,我们公司有很多服务器,现......
  • css加载图标转圈代码
    转圈代码<iclass="el-icon-loading"></i>.el-icon-loading{animation:rotating2slinearinfinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframesrotating{0%{transfor......
  • 记PE文件结构实验,模拟文件内存加载过程。
    记录文件结构试验前言:使用的模拟程序是notepad.exe,主要记录其中的思路和遇到其中的困难。实验目的:模拟内存加载PE文件的过程,将每个区段模拟加载到内存之中。根据文件结构中头表中的信息,读取并sekk指针到Segment头。然后循环遍历Segment头将内容加载到VirtualAddress中,主要目的......
  • GO语言中import GitHub的包 会影响加载速度吗
    在Go语言中使用GitHub的包不会影响加载速度。在Go语言中,所有包都是静态导入的,因此使用import关键字导入GitHub的包时,Go编译器会将包中的代码文件解压缩到您的项目目录中,并在运行时直接调用这些文件,而不是通过网络下载它们。这意味着import语句不会增加项目的启动时间,而且使用import......
  • React项目笔记-环境搭建、路由封装(跳转Navigate、懒加载lazy)、模块化样式引入、状态管
    环境准备nodev16.15.0npm8.5.5AntDesignofReact:https://ant.design/docs/react/introduce-cn一,创建项目npminitvite√Projectname:...vite-project-react√Selectaframework:»React√Selectavariant:»TypeScript然后使用vscode打开项目,由于......
  • 项目管理工具----普加项目管理中间件(PlusProject )入门教程(10):数据加载
    普加项目管理中间件是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。PlusProject提供了加载json数据方式来显示。规定的数据格式如下:{ UID:100, Name:'ProjectName', StartDate:'2007-01-01T08:00:00', Fin......
  • SpringBoot中配置文件和配置类实现个性化配置的一点区别
    先说配置文件,以properties文件为例,默认存放静态资源文件夹路径是 "classpath:/META-INF/resources/","classpath:/resources/","classpath:/static/","classpath:/public/"。经过下面配置后,这些默认规则都不再生效。#自定义静态资源文件夹位置spring.web.resources.static-locat......
  • 设计模式-单例模式
    保证在整个软件系统中,对某个类只能存在一个对象实例。饿汉式(类加载时创建,没用到也创建)1、构造器私有化(防止new对象)。2、类内部创建私有的静态对象。3、用一个公共的getInstance()静态方法返回该对象。如Runtime类懒汉式(使用才创建)1、仍然使构造器私有化。2、类内部定义静......
  • 手撕代码 单例模式 饿汉和懒汉
    #include<bits/stdc++.h>usingnamespacestd;classA{private:staticA*usr;staticintcnt;A(){usr=NULL;cnt=0;cout<<"构造函数A"<<endl;}public:staticA*get(){......