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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ToGame 中级黑马   /  2015-9-16 22:41  /  350 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

单例设计模式,是我们常见的一种设计模式,今天看到了这个,便把它写了下来:

单例设计模式有两种,一种是懒汉模式,一种是饿汉模式!
两种模式各有特点:
          先上代码,结合代码讲解更好:
懒汉模式:
public class Demo
{
     private static Demo INSTANCE=new Demo();
     private Demo(){}
     public static Demo getDemo()
     {
            return INSTANCE;
      }
}
这种模式想要获取这个单例,只有通过静态方法getDemo得到,这里的INSTANCE利用封装的特性变得如常量一般,只能new一次,也就是说这个单例,在堆内存中,它的地址是不会变化的

饿汉模式:
class Demo
{
private Demo(){}
public static final Demo INSTANCE = new Demo();
}

饿汉模式则是直接将定义一个静态常量单例类,这里的INSTANCE也是不能在new 的,因为常量只能被赋值一次!
OK!!这就是两种模式了,THANK!!

8 个回复

倒序浏览
感谢分享哈!!!{:2_30:}
回复 使用道具 举报
懒汉式有延时加载 ,需要用时才调用暴露出去的方法创建对象,而且要加锁。
所以   private static Demo INSTANCE=null;。。。。。
饿汉式你也没有定义一个对外暴露的方法调用,怎么使用这个类。
回复 使用道具 举报
两种都不对,你把饿汉式当成了懒汉式,懒汉式要延迟加载,只有getInstance被调用时,才生成对象
回复 使用道具 举报
即将看到这里来了~
回复 使用道具 举报
学习了 学习了学习了
回复 使用道具 举报
ln0491 中级黑马 2015-9-17 09:41:51
7#
写错了。。。。。。。
回复 使用道具 举报
_(:з」∠)_没学到的看着楼上评论已经搞混了
回复 使用道具 举报
学习了学习了学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马