
单例模式饿汉式/懒汉式的区别
发布日期: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; }}
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月09日 16时22分07秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
利用qemu+gdb在ubuntu下搭建调试kernel的环境
2021-05-09