解决的问题:保证一个类在内存中的对象唯一性。
比如:多程序读取一个配置文件时,建议配置文件封装成对象。会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中是唯一的。
例如总共3个人 2个人打赌,第3个人作为见证人,那么就得保证见证人的唯一性,总不能说 你打赌输了,就在找个见证人证明说你们没打过赌或者说你赢了?虽然例子不是很形象但是能说明问题了,单例设计模式就是为了保证对象的唯一性。在单例设计中,对象时内部创建的,类只提供获得对象的方法,构造方法是私有的,表示你不能自己去创建对象
单例设计模式分为:恶汉试和懒汉式
- 饿汉式
- class Single{
- private Single(){} //私有化构造函数。
- private static Single s = new Single(); //创建私有并静态的本类对象。
- public static Single getInstance(){ //定义公有并静态的方法,返回该对象。
- return s;
- }
- }
- ---------------------------------------------
- //懒汉式:延迟加载方式。
- class Single2{
- private Single2(){}
- private static Single2 s = null;
- public static Single2 getInstance(){
- if(s==null)
- s = new Single2();
- return s;
- }
- }
复制代码 延迟加载:如果一直没有用到这个对象,就不会创建
如果不是延迟,不管用不用都会加载这个对象
|