单例设计模式:保证类在内存中只有一个对象。
单例设计模式,首先要私有构造方法,防止被实例化多个对象。其次要在类中创建自己的对象,而且要对外提供这个对象。
1.饿汉式
顾名思义,就是一上来就创建对象的意思
class Singleton{ // 私有构造方法,防止创建对象 private Singleton(){} // 创建本类对象 private static Singleton s = new Singleton(); // 对外提供公共的访问方法 public static Singleton getInstance() { return s; } }
2.懒汉式
顾名思义,就是调用时才创建对象的意思
class Singleton{ // 私有构造方法,防止创建对象 private Singleton(){} private static Singleton s; // 对外提供公共的访问方法 public static Singleton getInstance() { if (s == null){ // 保证对象是唯一的 s = new Singleton(); } return s; } }
一般都会用的是饿汉式。饿汉式是一开始就创建对象的,虽然会消耗一点内存,但是效率高。而懒汉式是等到调用才创建对象,节省这么一点内存空间没什么实际作用。
而且针对上面写的懒汉式,线程不安全。可能会创建多个对象。写成线程安全的话,效率更加低,所以一般不用。