设计模式是对问题行之有效的解决方案,它其实是一种思想。
单例设计模式:
解决的问题:可以保证一个类在内存中只能有一个对象。(比如多个程序使用相同的配置信息对象时,就需要保证对象的唯一性)
如何保证唯一性:1、不允许其他程序用new创建类对象
2、在该类中创建一个本类实例
3、对外提供一个方法让其他程序可以获取该对象
达成唯一性的步骤:
1、私有化该类构造函数(private)
2、通过new在本类中创建一个本类对象
3、定义一个公有的方法,将创建的对象返回
class Single
{
static Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
//调用对象的方式采用类名调用,类名调用的前提是调用静态方法,静态访问的内容必须是静态故static Single用静态修饰
class SingleDemo
{
Single ss1 = Single.getInstance();
Single ss2= Single.getInstance();
System.out.println(ss1==ss2);
}
//输出结果为true也就说明对象唯一
这种方式在类一 加载就会产生对象。也称作恶汉式单例模式。
对应的懒汉式如下:
懒汉式即类加载进来时,没有对象,只有调用geyInstance方式时,才会创建对象。(延迟加载形式)
class Single2
{
static Single2 s = null;
private Single2(){}
public static Single2 getInstance()
{
if ( s == null )
s = new Single2 ();
return s;
}
}
真实开发时饿汉式使用较多,因为懒汉式在用的时候如果碰见多线程问题有可能出现 对象的唯一性问题存在安全隐患。(面试时饿汉式碰见的多)