1.什么是单例模式?
在应用系统中一个类只有一个实例对象存在,而且该实例容易被异界访问。
2.什么时候用单例模式?
希望在系统中某个类只有一个对象存在,即 对用多个程序使用同一个信息对象的时候,就要保证该对象的唯一性。
3.单例模式的好处?
①控制资源的使用,通过线程同步来控制资源的并发访问。
②控制实例产生的数量,达到节约资源的目的。
③作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的情况下,让多个不相干的两个线程或进程实现通讯。
4.举例说明。
①数据库连接池的设计一般采用单例模式。
5.单例模式是否会影响线程安全?
会的,如果有写操作的时候会的,可以设计成同步函数(synchronized)。
6.如何保证对象的唯一性?
①不允许其他程序使用new关键字来创建对象(私有化该类构造方法)。
②在本类创建一个本类实例(new一个对象)。
③对外提供一个方法让其他应用程序可以获取该类对象(定义一个public方法,将本类创建的对象返回)。
7.单例模式的两种形式。
①,饿汉式(一上来就先new一个对象,类一加载,对象就产生了)
public class SingleTon{
private static SingleTon s = new SingleTon();
private SingleTon { }
public static synchronized SingleTon getInstance(){
return s;
}
}
②,懒汉式(类加载进来,不会产生对象,当调用getInstance()方法时,才会创建对象,延迟加载形式)
public class SingleTon{
private static SingleTon s = null;
private SingleTon{ }
public static synchronized SingleTon getInstance(){
if(s==null){
s = new SingleTon();
}
return s;
}
}