设计模式:对问题行之有效的解决方式。其实是一种思想。
Q:单例设计模式所解决的问题?
可以保证一个类在内存中的对象的唯一性。
Q:什么时候需要保证一个类在内存中的对象的唯一性?
例如多个程序使用同一个配置信息对象时,需要保证该对象的唯一性。
Q:如何保证对象的唯一性?
1. 不允许其他应用程序用new创建该类对象
2. 在该类创建一个本类的实例。
3.再对外提供一个方法让其他程序可以获取该对象。
Q:步骤?
1. 私有化该类构造函数
2. 在本类中new一个对象
3. 定义一个公有方法,将创建的对象返回
/*
需求,一个饿汉式单例
*/
class Single {
private static Single s = new Single();
private Single(){}
public static Single getInstance(){
return s;
}
}
class SingleDemo1{
Single s = Single.getInstance();
}
class SingleDemo2 {
Single2 s = Single2.getInstance();
}
//懒汉式单例模式
class Single2 {
private static Single2 s = null;
//此时类加载进内存,但是没有对象存在,当没有对象时只有调用getInstance()方法时才创建对象
private Single2(){}
public static Single2 getInstance(){
if (s == null) {
synchronized(Single2.class)
{
if(s == null) {
s = new Single2();
}
}
}
return s;
}
}