单例模式(饿汉式)
单例模式是一种创建性的设计模式,主要是保证一个类只能有一个实例。全局中保证一个实例的使用。
单例模式饿汉式主要的构成是如下
- 单例类
- 私有化构造函数(防止实例化)
- 私有化变量
- 公共静态获得实例的方法(在调用这个方法前就已经实例化好了)
代码
静态变量创建实例代码
package singleton;
/**
*
* @author: Hui
**/
public class SingletonTest {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
Singleton singleton1 = Singleton.getInstance();
System.out.println(singleton == singleton1);
System.out.println(singleton.hashCode());
System.out.println(singleton1.hashCode());
}
}
class Singleton{
//1.私有化构造方法
private Singleton(){}
//2.创建一个静态对象
private static Singleton instance = new Singleton();
//3.创建一个静态返回实例方法
public static Singleton getInstance(){
return instance;
}
}
静态代码块创建实例
package singleton.type2;
/**
* @author: Hui
**/
public class SingletonTest2 {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
Singleton singleton1 = Singleton.getInstance();
System.out.println(singleton == singleton1);
System.out.println(singleton.hashCode());
System.out.println(singleton1.hashCode());
}
}
class Singleton {
//1.私有化构造方法
private Singleton() {
}
//2.创建一个静态对象
private static Singleton instance;
static {
instance = new Singleton();
}
//3.创建一个静态返回实例方法
public static Singleton getInstance() {
return instance;
}
}
优点:提前实例化,不存在线程并发等问题。
缺点:不符合懒加载情况,在不使用该实例的时候会造成内存浪费。