黑马程序员技术交流社区

标题: 编写一个延迟加载的单例设计模式。 [打印本页]

作者: 黑黑黑马    时间: 2014-3-11 11:50
标题: 编写一个延迟加载的单例设计模式。
本帖最后由 黑黑黑马 于 2014-3-11 19:39 编辑

求教。刚上了java基础班,一个入学测试,谁给提供了思路呀,,看名字我都蒙了,这块没学过
作者: 目标    时间: 2014-3-11 11:53
1、单例就是该类只能有一个唯一的对象,私有构造函数
2、在内部建立对象 提供公共访问方式访问
3、双重判断对对象的引用进行判断,加入同步更安全。
作者: kira    时间: 2014-3-11 11:55
本帖最后由 kira 于 2014-3-11 11:57 编辑

多加一个判断而已
  1. class Single{
  2.         private static Single s = null;
  3.        private Single(){}
  4.         public static Single getInstance(){
  5.                 if(s==null){
  6.                         synchronized (s) {
  7.                                 if(s==null)
  8.                            s  =new Single();                        
  9.                         }
  10.                 }
  11.                 return  s;
  12.         }
  13.         
  14. }
复制代码

作者: 焚雨成灰    时间: 2014-3-11 12:23
单例设计模式二(懒汉式)
类进内存对象还没有存在,只有调用方法时才建立对象
对象是方法被调用时才初始化,也叫做对象的延时加载
class Single
{
        private static Single s = null;
        private Single(){}
        public static Single getInstance()
        {
                if(s == null)
                        s = new Single();
                        return s;
        }
}
楼上那个事涉及多线程了
作者: 2528870651    时间: 2014-3-11 12:58
延迟加载的单例设计模式:    不就是懒汉式吗??
  1. class Single
  2. {
  3.         private static Single s = null;
  4.         private Single(){}
  5.         public static Single getInstance()
  6.         {
  7.                 if(s==null)
  8.                         s = new Single();
  9.                         return s;
  10.         }
  11. }
复制代码


  1. class Single
  2. {
  3.         private static Single s = null;
  4.         private Single(){}
  5.         public static Single getInstance()
  6.         {
  7.                 if(s==null)
  8.                 {
  9.                         synchronized(Single.class)    //懒汉式多线程容易出问题  ,加双重判断解决了这个问题
  10.                         {                               
  11.                                 if(s==null)
  12.                                         s = new Single();
  13.                         }
  14.                 }
  15.                 return s;
  16.         }
  17. }
复制代码



作者: 黑黑黑马    时间: 2014-3-11 13:04
好多呀,,,那一个
作者: 无所谓啦    时间: 2014-5-27 19:19
我是来学习的
作者: 1007087594    时间: 2014-5-28 10:27
延迟的就是懒汉的,就是上面几个大神们写的那样
作者: iloveyou    时间: 2014-5-28 19:34
好啊,真不错
作者: liujingnan    时间: 2014-7-14 00:36
多谢指导!
作者: xhbxhb    时间: 2014-8-31 23:32
真心不错
作者: woaiheima    时间: 2014-9-2 17:01
单例设计模式分两种,一种是懒汉式,一种是饿汉式。其中懒汉式就是延迟加载的单例设计模式
作者: 爱吃小土豆    时间: 2014-10-8 22:39
求注释啊 有点看不懂啊

作者: wingtheu    时间: 2014-11-2 17:43
延迟加载单例设计模式之一的方法是懒汉式

作者: wingtheu    时间: 2014-11-2 17:45
2528870651 发表于 2014-3-11 12:58
延迟加载的单例设计模式:    不就是懒汉式吗??

延迟加载的单例设计模式只能用懒汉式吗?其它的方法行不?
作者: 齐宁宁    时间: 2014-11-4 15:28
延迟加载就是指懒汉式的单例设计,对象先不实例化,什么时候用,什么时候实例化,这就是延迟的意思
作者: liangkun097    时间: 2014-11-25 00:48
焚雨成灰 发表于 2014-3-11 12:23
单例设计模式二(懒汉式)
类进内存对象还没有存在,只有调用方法时才建立对象
对象是方法被调用时才初始化 ...

涨姿势了
作者: 冬天的雪    时间: 2014-11-25 20:55
太难理解了!

作者: rehan    时间: 2015-2-11 14:13
不错,你们都很棒,我要加油了↖(^ω^)↗
作者: wzb1991    时间: 2015-4-29 15:14
o(︶︿︶)o我也对此不懂,这部分有点懵、、、
作者: 凉仁日记    时间: 2015-5-7 22:20
很详细    漂亮的代码
作者: 龙腾浩少    时间: 2015-5-9 15:28
正好也有这道测试题,毕大神的视频里好像有
作者: xiaoqiao    时间: 2015-5-27 19:53
我也遇到了 参考一下大神的资源
作者: xiaoqiao    时间: 2015-5-27 19:54
woaiheima 发表于 2014-9-2 17:01
单例设计模式分两种,一种是懒汉式,一种是饿汉式。其中懒汉式就是延迟加载的单例设计模式 ...

饿汉式是什么呢?求指导
作者: twa42    时间: 2015-5-29 11:35
同感,还在为入学名额努力中..
作者: guanyang    时间: 2015-5-30 15:50
额,对于我这个新手,我不知道这个怎么用,球告知
作者: woaiheima    时间: 2015-6-3 21:05
xiaoqiao 发表于 2015-5-27 19:54
饿汉式是什么呢?求指导

饿汉式就是饿了先吃,懒汉式就是先等服务员送过来再吃
作者: xiaoqiao    时间: 2015-6-3 23:14
哦 明白了,一个是自食其力 一个是坐享其成呀!亲给的很形象哦,,,谢谢
作者: qingger    时间: 2015-7-1 13:58
暂时还不懂,学习中
作者: qingger    时间: 2015-7-1 15:12
模糊不清
作者: adglo    时间: 2015-7-3 17:23
谁能告诉我这是哪块的内容
作者: 王竹根    时间: 2015-7-18 11:04
不错。。。。。。。。。。。。。。。。。。。。。
作者: sangyuan    时间: 2015-8-9 14:13
单例设计模式是为了解决一个类在内存只存在一个对象的问题 ,分为饿汉式和懒汉式,饿汉式是先初始化对象,Single类一进内存,就已经创建好了对象,而懒汉式 也叫 对象的延时加载,对象是方法被调用时才初始化。   刚学了这部分知识,个人理解~~
作者: zzy张    时间: 2015-9-27 11:48
2528870651 发表于 2014-3-11 12:58
延迟加载的单例设计模式:    不就是懒汉式吗??

请问饿汉模式代码怎么写,谢谢
作者: zzy张    时间: 2015-9-27 11:53
2528870651 发表于 2014-3-11 12:58
延迟加载的单例设计模式:    不就是懒汉式吗??

s为null的判断为什么要两次?
作者: 止如初见    时间: 2015-10-31 08:43
我以为很难,结果看了大神的答案,别理我 ,我想静静,
作者: 奔跑着    时间: 2015-12-2 19:00
为什么就没听过懒汉式这个词
作者: houbofly    时间: 2016-1-4 23:40
厉害,厉害
作者: xqgdmg    时间: 2016-3-25 23:05
66666666666
作者: 爱睡懒觉的小杨    时间: 2016-7-30 23:22
不知道这样写有啥子意思,是一种思想吗?有什么用途




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2