单例模式我们开发中用的很多了,最常见的是全局配置文件或者具体的如内购支付工具,或者数据库管理,一些第三方SDK如友盟,Bugly等的配置等,那么究竟什么是单例模式呢?下面我描述一个简单场景,分别用普通处理方式和单例模式进行处理,后面会给出单例模式的定义和具体应用场景
案例:对配置文件的读取,这个配置文件中设置的是项目中用到的一些参数,比如访问的服务器地址,分正式,测试和预发环境
我们建一个配置文件,status:0,1,2代表测试,预发和正式的三种状态,Server代表三种状态下的服务器地址,当然这里只是个例子,具体项目中对多环境的配置这块,我之前写过一篇文章专门讲述过,有兴趣的朋友可以前去查看下App多环境配置的方法
言归正传,下面介绍普通方法处理配置文件
1.普通方法处理
首先是建一个处理配置文件的类,提供一个解析配置文件的方法,并且在这个类中提供server属性以供外界访问
客户端调用如下:
那么这么做的不足之处在哪里呢?从表面看我们也具有一定的封装性,但是既然是配置文件,配置的东西肯定在项目中多处用到,我们这种方式是生成了一个ParseConfig
的实例变量去访问,如果多处用到,就要在使用到的地方多次生成实例变量访问,而且对文件的访问也是要消耗资源的,那么有没有可能只初始化一次,对配置文件只解析一次的方法呢?单例模式就可以实现,下面着重讲述一下单例模式
2.单例模式
单例模式的定义
保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式的功能
用来保证一个类在运行期间只会被创建一个类实例,此外还提供了全局唯一访问这个类实例的访问点
理论毕竟枯燥,主要还是看代码实现
客户端调用
入口处初始化
调用