zoukankan      html  css  js  c++  java
  • 设计模式-----单例模式

    单例模式

    可以分为两种:饿汉式和懒汉式两种,饿汉是在系统启动的一开始就初始化好了实例,而懒汉式是在第一次访问的时候才初始化实例。

    饿汉模式

    package org.lltse.pattern.singleton;  
      
    /** 
     * @author lltse 
     * @date 2014-3-13 
     * @ask 饿汉模式 
     * @answer 
     */  
    public class HungerSingleton 
    {  
      
        /** 
         * 一开始就初始化好了实例 
         */  
        private static HungerSingleton instance = new HungerSingleton();  
      
        private HungerSingleton() 
        {  
        }  
      
        public static HungerSingleton getInstance() 
        {  
            return instance;  
        }  
    }  


    懒汉模式

    package org.lltse.pattern.singleton;
    /** 
     *  
     * @author lltse 
     * @date 2014-3-13上午11:41:22 
     * @ask 懒汉模式 
     * @answer 
     */  
    public class LazySingleton 
    {  
    
        private static LazySingleton instance = null;  
      
        private LazySingleton() 
        {  
        }  
      
        public static synchronized LazySingleton getInstance() 
        {  
            if(instance == null)
            {  
                instance = new LazySingleton();  
            }  
            return instance;  
        }  
    }  

     

    多线程环境下的懒汉单例模式

    package org.lltse.pattern.singleton;
    /** 
     * @author lltse 
     * @ask 既满足懒汉模式,又满足只有一个实例,即使多线程环境也是一个实例。
     */
    public class Singleton 
    {       
          
        static class SingletonHolder 
        {       
            static Singleton instance = new Singleton();       
        }       
          
        public static Singleton getInstance() 
        {       
          
            return SingletonHolder.instance;       
          
        }       
    }  
  • 相关阅读:
    简单播放器(增加sdl事件控制)
    注册表读写
    vb6 的关机代码
    设置系统时间
    获取屏幕工作区、定位任务栏、窗口置顶
    用WINSOCK API实现同步非阻塞方式的网络通讯
    使用API调用外部程序并监控程序状态
    vba截屏保存
    StrConv 内码转换
    阻止文本框获取键盘输入
  • 原文地址:https://www.cnblogs.com/lltse/p/3640610.html
Copyright © 2011-2022 走看看