单例设计模式
解决的问题:保证一个类在内存中对象的唯一性。
例如:多个程序读取一个配置文件时,建议将配置文件封装成对象,这样会方便操作其中数据。但是,又要保证多个程序读到的是同一个配置文件对象,这就需要该配置文件对象在内存中是唯一的了。
如何保证对象唯一性呢?
思想:
1.不让其它程序创建该类对象
2.在本类中创建一个本类对象
3.对外提供一个公有方法,让其它程序获取这个对象
步骤:
1.因为创建对象都需要构造函数初始化,所以只要将本类中的构造函数私有化,其它程序就无法在创建该类对象了。
2.在类中创建一个本类对象。
3.定义一个方法,返回该对象。让其它程序可以通过这个方法就得到本类对象。(作用:可控)
代码体现:
1.私有化构造函数 private 类名(){}
2.创建私有并静态的本类对象 private static 类名 s = new 类名();
3.定义公有并静态的方法,返回该对象 public static 返回值(类类型) 方法名(){return s;}
单例设计模式使用的注意
1.不要使用单例模式存取全局变量。这违背了单列模式的用意,最好放到对应类的静态成员中。
2.不要将数据库连接做成单例,因为一个系统可能与数据库有多个连接,并且在有连接池的情况下,应当尽可能及时释放连接。
单例设计模式由于使用静态成员存储类实例,所以可能会造成资源无法及时释放。
|