单例模式
Java中单例模式是一种常见的设计模式。
单例模式分三种:懒汉式单例,饿汉式单例,登记式单例。
单例模式的特点:
- 单例类只能有一个实例
- 单例类必须自行创建这个实例
- 单例类必须自行向整个系统提供这个实例
单例模式举例:(懒汉式)
public class Person {
private static Person person =null;
private Person(){
}
public static Person getPerson() {
if(person==null){
synchronized(Person.class){
if(person==null)
person=new Person();
}
}
return person;
}
}
单例模式的缺点:
不适用于变化的对象,如果同一类型的对象总是要在不同的用例场景发生变化,单例就会引起数据的错误,不能保存彼此的状态。
单例模式存在的意义:
单例模式让多线程处于等待的状态,一个一个的去解决,节约内存,提高了运行成本
单例模式应用情况:
对于多个对象使用同一个配置信息时,就需要保证该对象的唯一性。
如何保证对象的唯一性?
- 不允许其他程序用new创建该类对象。
- 在该类创建一个本类实例
- 对外提供一个方法让其他程序可以获取该对象
实现的方法:
- 构造函数私有化
- 类定义中含有一个该类的静态私有对象
- 该类提供了一个静态的公共的函数用于创建或获取它本身的静态私有对象