设计模式(一)-单例模式

1.作用

保证只有一个实例,并且提供一个访问该实例的全局访问点。

2.常见场合

window的任务管理器和回收站、项目的配置文件、打印机

3.如何保证唯一性

1.不允许其他程序用new创建该类对象。
2在该类创建一个本类的实例。
3.对外提供一个方法让其他程序获取该对象。

4.设计步骤

1.私有化该类构造函数
2.通过new在本类创建一个本类对象
3.定义一个公有的方法,将创建的对象返回

5.常规形式

1.懒汉式

懒汉式单例呢,可以这样理解,单例模式呢,其在整个应用程序的生命周期中只存在一个实例,懒汉式呢,就是这个单例类的这个唯一实例是在第一次使用 GetInstance()时实例化的,如果您不调用 GetInstance()的话,这个实例是不会存在的,即为 null形象点说呢,就是你不去动它的话,它自己是不会实例化的,所以可以称之为懒汉。

public class SingletonClass{
    private static SingletonClass instance=null;
    public static synchronized SingletonClass getInstance()
    {
        if(instance==null)
        {
               instance=new SingletonClass();
        }
        return instance;
    }
    private SingletonClass(){
    }
}

2.饿汉式

饿汉式的话,刚好相反,其由于肚子饿了,所以到处找东西吃,人也变得主动了很多,所以根本就不需要别人来催他实例化单例类的为一实例,其自己就会主动实例化单例类的这个唯一类。

public static class Singleton{
    //在自己内部定义自己的一个实例,只供内部调用
    private static final Singleton instance = new Singleton();
    private Singleton(){
        //do something
    }
    //这里提供了一个供外部访问本class的静态方法,可以直接访问
    public static Singleton getInstance(){
        return instance;
    }
}

3.双重锁

public static class Singleton{
    private static Singleton instance=null;
    private Singleton(){
        //do something
    }
    public static Singleton getInstance(){
        if(instance==null){
            synchronized(Singleton.class){
                if(null==instance){
                    instance=new Singleton();
                }
            }
        }
        return instance;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值