A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 符立波 高级黑马   /  2012-10-22 08:43  /  1235 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁能说的下单例设计模式的使用的具体应用(最好举个实际代码例子)?还有就是为什么说懒汉式的特点在于实例的延迟加载呢?最后怎么用线程去操作懒汉式,而且证明它使用的锁是类名.class?

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
首先,单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
单例模式的应用:单例模式适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统,它们都是原型的例子。典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问指针,这便是众所周知的单例模式的应用。
例如一台计算机可以有多台打印机,但只能有一个 Printer Spooler.
回复 使用道具 举报
单例设计模式的实现有两种:饿汉式(预先加载)、懒汉式(延迟加载),下面分别来看这两种实现方式。

(1)、饿汉式(预先加载)


public class Singleton{  
    private static Singleton instance = new Singleton();  
      
    private Singleton(){}  
  
    public static synchronized Singleton getInstance(){  
        return instance;  
    }   
}  
(2)懒汉式(延迟加载)
public class Singleton{  
    private static Singleton instance = null;  
      
    private Singleton(){}  
  
    public static synchronized Singleton getInstance(){  
        if(instance==null){  
             instance = new Singleton();  
        }  
        return instance;  
    }   
}  

public class Singleton{
        private static Singleton instance = null;
       
        private Singleton(){}

        public static synchronized Singleton getInstance(){
                if(instance==null){
                         instance = new Singleton();
                }
                return instance;
        }
}

观察上面的这两种模式,看起来区别并不大,前一种方式是类一旦加载就得将对象实例化了,而后一种则是在使用的时候才进行判断是否要实例化对象,并且在后一种的getInstance方法中加入了同步,这样显得更加的合理,个人更加偏好于使用第二种方式。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马