您现在的位置是:首页 >

实现一个单例模式 Java与模式之单例模式

火烧 2021-09-30 13:18:13 1034
Java与模式之单例模式   单例模式(Si gleto ) 属于最常见的设计模式之一 大部分系统都会用到 目的是为了维护系统中唯一的一个实例 可分为eager模式 示例代码如下 Java代码 cla

Java与模式之单例模式  

实现一个单例模式 Java与模式之单例模式

  单例模式(Singleton) 属于最常见的设计模式之一 大部分系统都会用到 目的是为了维护系统中唯一的一个实例     可分为eager模式 示例代码如下     Java代码    class EagerSingleton{         private static final EagerSingleton m_instance = new EagerSingleton()          private EagerSingleton(){}         public static EagerSingleton getInstance(){             return m_instance;         }    }    class EagerSingleton{    private static final EagerSingleton m_instance = new EagerSingleton()     private EagerSingleton(){}    public static EagerSingleton getInstance(){    return m_instance;    }    }    和 lazy模式 示例代码如下     Java代码    class LazySingleton{         private static LazySingleton m_instance = null;         private LazySingleton(){}         public synchronized static getInstance(){            if(m_instance == null){                   m_instance = new LazySingleton()             }            return m_instance;         }    }    class LazySingleton{    private static LazySingleton m_instance = null;    private LazySingleton(){}    public synchronized static getInstance(){    if(m_instance == null){    m_instance = new LazySingleton()     }    return m_instance;    }    }    java源码中 Runtime getRuntime()就是单例的一个例子     单例模式的精神就是整个系统中维护一个实例 推广开来 如果在一个系统中需要维护多个示例 那么就产生了多例模式(multiton)     多例模式(Multiton) 通过聚集对象了保留自身的多个示例 根据客户端的参数返回所需要的实例     示例代码如下     Java代码    class Multiton{         private final int INSTANCE_SIZE = ;         private static Map instances = new HashMap(INSTANCE_SIZE)          private String name;         private Multiton(){}         private Multiton(String name){              this name = name;         }         public synchronized static getInstance(String name){                if(ntainsKey(name)){                     return instances get(name)                 }                else{                     ins = new Multiton(name)                      instances put(name ins)                      return ins;                }         }    }    class Multiton{    private final int INSTANCE_SIZE = ;    private static Map instances = new HashMap(INSTANCE_SIZE)     private String name;    private Multiton(){}    private Multiton(String name){    this name = name;    }    public synchronized static getInstance(String name){    if(ntainsKey(name)){    return instances get(name)     }    else{    ins = new Multiton(name)     instances put(name ins)     return ins;    }    }    }

lishixinzhi/Article/program/Java/hx/201311/25909  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码