单例模式饿汉式/懒汉式的区别
发布日期:2021-05-06 15:12:17 浏览次数:22 分类:精选文章

本文共 1355 字,大约阅读时间需要 4 分钟。

単例设计模式(Singleton Pattern):

所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。
如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。
因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法以返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以,指向类内部产生的该类对象的变量:也必须定义成静态的。

总结:

①.单例类只能有一个实例;
②. private Constructor(){}
③.内部创建类的对象;
④.提供public static的方法,返回类的对象;
⑤.此对象也必须声明为static;

1.所谓类的单例模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例

2.如何实现?
饿汉式 vs 懒汉式
3.区分饿汉式和懒汉式
饿汉式:
优:线程安全
劣:对象加载时间过长;
懒汉式:
优:延迟对象的创建;
劣:线程不安全

饿汉式:类加载的时候,就开始初始化instance,即一上来就new;

//饿汉式class Bank{       //1.私有化类的构造器    private Bank(){       }    //2.内部创建类的对象    //4.要求此对象也必须声明为静态的    private static Bank instance = new Bank();//instance实例    //3.提供公共的方法,返回类的对象    public static Bank getInstance(){           return instance;//instance也声明成static    }

懒汉式:只有调用getInstance()的时候,才会初始化单例,即什么时候用,什么时候new

//懒汉式class SingleTonLazy{       //1.私有化类的构造器    private SingleTonLazy(){       }    //2.声明当前类对象,没有初始化    private static SingleTonLazy instance = null;    //3.声明public static的返回当前类对象的方法    public static SingleTonLazy getInstance(){             if(instance == null){   //为null再实例化            synchronized (SingleTonLazy.class) {                   if(instance == null){                       instance = new SingleTonLazy();                }            }        }        return instance;    }}
上一篇:刷题03
下一篇:自动装箱/自动拆箱

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年04月09日 16时22分07秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章