单例模式
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
注意:
- 1、单例类只能有一个实例。
- 2、单例类必须自己创建自己的唯一实例。
- 3、单例类必须给所有其他对象提供这一实例。
解决的问题
可以保证一个类在内存中的对象唯一性,必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。
代码实现
常见的两种实现方式:饿汉式、懒汉式
饿汉式:
public class SingletonTest1
{
public static void main(String[] args)
{
Bank bank1 = Bank.getBank();
Bank bank2 = Bank.getBank();
//验证这两个指的是不是同一个对象
System.out.println(bank1==bank2);
}
}
class Bank
{
//1、私有化构造器
private Bank()
{
}
//2、内部创建类的对象(注意此对象也必须是静态的)
private static Bank bank = new Bank();
//3、提供公共的静态的方法,返回类的对象
public static Bank getBank()
{
return bank;
}
}
验证结果:
懒汉式:
public class SingletonTest2
{
public static void main(String[] args)
{
Book book1 = Book.getInstance();
Book book2 = Book.getInstance();
System.out.println(book1 == book2);
}
}
class Book
{
//1、私有化构造器
private Book()
{}
//2、声明当前类对象,并不初始化
private static Book instance = null;
//3、声明公共的静态的方法
public static Book getInstance()
{
//需要对象时,判断对象是否存在,不存在时才创建
if (instance == null)
{
instance = new Book();
}
return instance;
}
}
两种方式的特点:
饿汉式是天然的线程安全的;懒汉式具有延时加载的特性(用的时候再创建对象)