- 对接口编程而不是对实现编程
- 优先使用对象组合而不是继承
单例模式
- 说明:单例类创建自己的唯一实例,并提供使用实例的接口
- 用途:一个全局类被频繁的创建和销毁
静态实现
class SingleInstance{
private static SingleInstance instance = new SingleInstance();
private SingleInstance(){}
public static SingleInstance getInstance(){
return instance;
}
public void getMsg(){
System.out.println("singleton pattern");
}
}
public class Main {
public static void main(String[] args) {
SingleInstance instance = SingleInstance.getInstance();
instance.getMsg();
}
}
双重校验锁(DCL)
class Singleton{
private volatile static Singleton singleton;
private Singleton(){}
public static Singleton getInstance(){
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new Singleton();
}
}
}
return singleton;
}
public void getMsg(){
System.out.println("singleton pattern of DCL");
}
}
public class Main {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
singleton.getMsg();
}
}
静态内部类(推荐)
class Singleton{
private static class SingletonHolder{
private static final Singleton singleton = new Singleton();
}
private Singleton(){}
public static Singleton getInstance(){
return SingletonHolder.singleton;
}
public void getMsg(){
System.out.println("single pattern of static inner class");
}
}
public class Main {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
singleton.getMsg();
}
}