黑马程序员技术交流社区

标题: 到底什么是单例设计模式? [打印本页]

作者: yjsf216    时间: 2015-3-5 22:40
标题: 到底什么是单例设计模式?
本帖最后由 yjsf216 于 2015-3-6 01:21 编辑

到底什么是单例设计模式?可能遇到过但是不是很明白,哪位大神可以详细解释一下,通俗易懂的。
作者: yjsf216    时间: 2015-3-5 22:54
我有些理解是:打个比方如果把类比作图纸,单例模式就好像是房子的图纸,一张图纸只可以建立一座房子,是这样理解的么?
作者: yangruijing    时间: 2015-3-5 23:10
本帖最后由 yangruijing 于 2015-3-5 23:13 编辑

单例设计模式:解决一个类在内存中只有一个对象就是在整个应用中保证只有一个类的实例存在。就像是Java Web中的application,也就是提供了一个全局变量,用处相当广泛,比如保存全局数据,实现全局性的操作等。
多个程序使用统一配置信息对象时,需要保证该对对象的唯一性。
保证对象唯一性的实现步骤:
1.将构造函数私有化:为了避免其他程序过多建立该对象,禁止其他程序调用该对象。
2.在类中创建一个本类对象:为了让其他程序可以访问该类对象
3.提供一个方法可以获取到该对象的方法:方便其他程序访问自定义的本类对象。
饿汉式:一进内存 就创建了对象
class single{
               private single(){}1.将构造函数私有化      
              private static single s=new single();2.在类中创建一个本类对象
             public static single getInstance(){3.提供一个方法可以获取到该对象的方法
               return s;
        }}
public class SingleDemo {
        public static void main(String[] args) {
                                single ss=single.getInstance();
        }}
懒汉式:什么时候调用什么时候创建对象,对象的延时加载
class single{
               private single(){}  
      private static single s=null;  
      public static single getInstance(){
             if(s==null){
                 synchronized(Single.class)//同步锁
                {
                        if (s==null){
                                s=single.getInstance();
                        }
                   }  
            }  
               return s;  
      }}
public class SingleDemo {
        public static void main(String[] args) {
                           single ss=single.getInstance()
        }}


作者: wf111sxwf    时间: 2015-3-5 23:45
  单例 是保证这个类在加载的时候 内生存中 从始至终 只有一个本类对象  你上面比的例子中 图纸就是这个单例  你就是 建立 一万栋房子 图纸 始终是那一张  不知懂否?
作者: yjsf216    时间: 2015-3-6 00:06
我明白了,就是get函数...........
作者: 黑马小夏    时间: 2015-3-6 00:21
看了三楼的回复,了解的更透彻了
作者: 鲍阳    时间: 2015-3-6 00:22
自己回去多看看视频就懂了
作者: 大爱卓生    时间: 2015-3-6 02:32
单(一个)例(实例),3楼的很赞!:P
作者: z47057554    时间: 2015-3-6 04:11
yjsf216 发表于 2015-3-5 22:54
我有些理解是:打个比方如果把类比作图纸,单例模式就好像是房子的图纸,一张图纸只可以建立一座房子,是这 ...

类是图纸的化,普通类的图纸可以得到的,你可以用图纸建n多房子
而单例是,我的图纸不公开,且我的图纸只建一个房子,你得不到,你想用可以,你必须得通过我得到房子,这里要分两种情况,
饿汉式:你找我要房子之前,我就已经建好一个房子了,你要的时候我直接把地址给你,你去用
懒汉式:你找我要房子之前,房子还没有,只有你找我要的时候,我才按图纸给你建一个让你用
作者: qq10763582    时间: 2015-3-6 07:10
懒汉,和饿汉
作者: 竹叶君子    时间: 2015-3-6 09:55
你可以参考毕向东老师讲解的视频,第六天的第82、83这两个视频,讲解的很详细
作者: wuyiai    时间: 2015-3-6 10:09
Http://blog.csdn.net/ssszzzbbb
可以看下这个博客   里面有一个单利模式
作者: huangchunwei    时间: 2015-3-6 10:19
回答的都很给力啊。加油。。。。
作者: 路文龙    时间: 2015-3-6 10:32
学习了。




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