设计模式
一、单例模式
- 枚举模式(推荐)
推荐使用,简单安全1 public enum Singleton { 2 single; 3 }
- 饿汉模式
线程安全,占用内存1 public class Singleton { 2 private static final Singleton single=new Singleton(); 3 private Singleton() {} 4 public static Singleton getSingleton() { 5 return single; 6 } 7 }
- 懒汉模式
线程不安全1 public class Singleton { 2 private static volatile Singleton single = null; 3 private Singleton() {} 4 public static Singleton getSingleton() { 5 if (single == null) { 6 single = new Singleton(); 7 } 8 return single; 9 } 10 }
双重检测--线程安全1 public class Singleton { 2 private static volatile Singleton single = null; 3 private Singleton() {} 4 public static Singleton getSingleton() { 5 if (single == null) { 6 synchronized (Singleton.class) { 7 if (single == null) { 8 single = new Singleton(); 9 } 10 } 11 } 12 return single; 13 } 14 }
静态内部类--线程安全1 public class Singleton { 2 private static class LazyHolders{ 3 private final static Singleton single=new Singleton(); 4 } 5 private Singleton() {} 6 public static Singleton getSingleton() { 7 return LazyHolders.single; 8 } 9 }
二、工厂模式----简单工厂模式,工厂方法模式,抽象工厂模式
- 参考:https://blog.csdn.net/lovelion/article/details/7523392 和 https://blog.csdn.net/kocscs123/article/details/53243847
- 摘要:对象职责分为三部分--本身职责,创建,使用 工厂模式就是将使用和创建解耦
- 构造方法复制时可以复用;
- 多个子类时,直接在工厂类中改变就行
- 多个构造函数时,通过方法名称构建比直接使用构造函数易读


浙公网安备 33010602011771号