设计模式

一、单例模式

  1. 枚举模式(推荐)
    1 public enum Singleton {
    2     single;
    3 }
    推荐使用,简单安全
  2. 饿汉模式
    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 }
    线程安全,占用内存
  3. 懒汉模式
     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 }
    静态内部类--线程安全

二、工厂模式----简单工厂模式,工厂方法模式,抽象工厂模式

  1. 参考:https://blog.csdn.net/lovelion/article/details/7523392 和 https://blog.csdn.net/kocscs123/article/details/53243847
  2. 摘要:对象职责分为三部分--本身职责,创建,使用     工厂模式就是将使用和创建解耦
    • 构造方法复制时可以复用;
    • 多个子类时,直接在工厂类中改变就行
    • 多个构造函数时,通过方法名称构建比直接使用构造函数易读
posted @ 2018-04-19 17:09  国际庄_码农  阅读(82)  评论(0)    收藏  举报