设计模式—常用的设计模式介绍
1.单例模式(Singleton)
简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例
- 1>懒汉式写法(线程不安全)
/**
* 懒汉式(线程不安全)
*/
public class Singleton {
private static Singleton singleton;
private Singleton() {
}
public static Singleton getInstance() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
- 2>懒汉式写法(线程安全)
/**
* 懒汉式(线程安全)
*/
public class Singleton2 {
private static Singleton2 singleton;
private Singleton2() {
}
/**
* 使用了synchronized关键字
* @return
*/
public static synchronized Singleton2 getInstance() {
if (singleton == null) {
singleton = new Singleton2();
}
return singleton;
}
}
- 3>饿汉式写法
/**
* 饿汉式
*/
public class Singleton3 {
private static Singleton3 singleton = new Singleton3();
private Singleton3() {
}
public static Singleton3 getInstance() {
return singleton;
}
}
- 4>静态内部类写法
/**
* 静态内部类写法
*/
public class Singleton4 {
/**
* 静态内部类
*/
private static class SingletonHolder{
private static final Singleton4 instance = new Singleton4();
}
private Singleton4() {
}
public static Singleton4 getInstance() {
return SingletonHolder.instance;
}
}