• 选学校
  • 高中毕后选择什么学校好
  • 启蒙星
  • 北大青鸟课程介绍
  • 北大青鸟助你走上高级软件工程师修炼之路
  • 转行不是梦,学北大青鸟IT培训
  • 北大青鸟辉煌12年
  • 株洲北大青鸟校区升级

您现在的位置:株洲北大青鸟 >> >> 师资力量>> 技术天地

师资力量
开班信息
输入姓名手机号码预约试听课程
姓  名:*
手机号:*
创业摇篮班
开班日期:10月15日
招生人数:25
就业直通班
开班日期:10月31日
招生人数:25
就业精英班
开班日期:9月13日
招生人数:已满
技术天地
  • JAVA设计模式中的单例模式
  • 发表日期:2009/7/19 14:50:57 阅读数:526  
  •  
  •                         JAVA设计模式中的单例模式

                                                                                        株洲北大青鸟   叶盛

    1.     定义
    单例模式是对象的创建模式的一种,它保证一个类有且只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类则称为单例类。
    2.     使用场合
    简而言之,就是任何只需要一个实例的地方.例如,窗口管理器,假脱机打印设备,数据库连接池。具体应用中,配置信息类,管理类,控制类,门面类,代理类通常被设计为单例类.
    3.     单例模式在java中的实现
    单例模式在Java语言的实现上有三种情况:饿汉式单例类,懒汉式单例类,登记式单例类。
    1)       饿汉式单例类
    饿汉式单例类饿汉式单例类是在Java 语言里实现得最为简便的单例类。在类被加载时,就会将自己实例化
    JAVA代码:
    public class Singleton{
       //私有的构造方法
       private Singleton(){}
       //注意此处是private的
       private static Singleton theInstance=new Singleton();
       //这里提供供外部访问本class静态的方法,可以直接访问
       public static Singleton getInstance(){
           return theInstance;
    }
    }
    2)      懒汉式单例类
    与饿汉式单例类不同的是,懒汉式单例类在第一次被引用时将自己实例化。
    JAVA代码:
    public class Singleton { 
         //定义Singleton的静态引用   
    public static Singleton theInstance = null;
    //构造方法为私有,不能在外部直接调用创建实例 
    private Singleton(){} 
    //提供公共的静态的、同步的方法,获取Singleton的实例
        public synchronized static Singleton instance(){     
            if(theInstance == null){     
                return new Singleton();     
            }     
            return theInstance;     
        }      
    } 
    3)      登记式单例类
            登记式单例类是为了克服饿汉式单例类及懒汉式单例类均不可继承的缺点而设计的。
    JAVA代码
    package com.javapatterns.singleton.demos;
    import java.util.*;
    public class RegSingleton     
    {
         //静态的私有HashMap对象
    static private HashMap m_registry = new HashMap();
    //静态块,类加载时运行  
        static     
    { 
         //实例RegSingleton对象
            RegSingleton x = new RegSingleton();
             //将其存贮在map集合中
            m_registry.put(x.getClass().getName(), x);
    } 
    //受保护的构造方法,子类可以调用。     
        protected RegSingleton(){ 
    }
     //公共的静态方法,返回该类的实例
        static public RegSingleton getInstance(String name)     
        {     
            if (name == null)     
            {     
                name = "com.javapatterns.singleton.demos.RegSingleton";     
            }     
            if (m_registry.get(name) == null)     
            {     
                try     
                {     
                    // Class.forName(name).newInstance()通过类名得到类的实例
                    m_registry.put(name, Class.forName(name).newInstance());     
                }     
                catch (Exception e)     
                {     
                    System.out.println("Error happened.");     
                }     
            }     
            return (RegSingleton) (m_registry.get(name));     
        }      

上一篇:Java基础:引用类型和原始类型的区分
下一篇:Java进阶:减少对象的创建提高java性能
分享到:

版权所有 ©株洲健坤科技职业培训学校    学校地址:株洲市天元区黄山路205号健坤大厦(天元区消防中队对面)

咨询报名热线:400-8812-866    邮箱地址:4008812866@b.qq.com   备案号: 湘ICP备10202015号  

北大青鸟学费是多少 湖南北大青鸟怎么样
株洲北大青鸟好不好 株洲北大青鸟学费多少 株洲北大青鸟学校这么样
秒速时时彩官方网站