5.1 场 景 问 题
5.1.1 读取配置文件的内容
考虑这样一个应用,读取配置文件的内容。
很多应用项目,都有与应用相关的配置文件,这些配置文件很多是由项目开发人员自定义的,在里面定义一些应用需要的参数数据。当然在实际的项目中,这种配置文件多采用xml格式,也有采用properties格式的,毕竟使用Java来读取properties格式的配置文件比较简单。
5.1.2 不用模式的解决方案
有些朋友会想,要读取配置文件的内容,这也不是个困难的事情,直接读取文件的内容,然后把文件内容存放在相应的数据对象里面就可以了。真的这么简单吗?先实现看看吧。
为了示例简单,假设系统采用的是properties格式的配置文件。
(1)直接使用Java来读取配置文件的示例代码如下:
(2)应用的配置文件,名字是AppConfig.properties,放在AppConfig相同的包里面。简单示例如下:
(3)写个客户端来测试一下。示例代码如下:
运行结果如下:
5.1.3 有何问题
上面的实现很简单,很容易的就实现要求的功能。仔细想想,有没有什么问题呢?
看看客户端使用这个类的地方,是通过new一个AppConfig的实例来得到一个操作配置文件内容的对象。如果在系统运行中,有很多地方都需要使用配置文件的内容,也就是说很多地方都需要创建AppConfig对象的实例。
换句话说,在系统运行期间,系统中会存在很多个AppConfig的实例对象,这有什么问题吗?
当然有问题了,试想一下,每一个AppConfig实例对象里面都封装着配置文件的内容,系统中有多个AppConfig实例对象,也就是说系统中会同时存在多份配置文件的内容,这样会严重浪费内存资源。如果配置文件内容较少,问题还小一点,如果配置文件内容本来就多的话,对于系统资源的浪费问题就大了。事实上,对于AppConfig这种类,在运行期间,只需要一个实例对象就是够了。