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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yjsf216 中级黑马   /  2015-3-5 22:40  /  1491 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yjsf216 于 2015-3-6 01:21 编辑

到底什么是单例设计模式?可能遇到过但是不是很明白,哪位大神可以详细解释一下,通俗易懂的。

14 个回复

倒序浏览
我有些理解是:打个比方如果把类比作图纸,单例模式就好像是房子的图纸,一张图纸只可以建立一座房子,是这样理解的么?
回复 使用道具 举报
本帖最后由 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()
        }}

评分

参与人数 1技术分 +1 收起 理由
万合天宜 + 1 很给力!

查看全部评分

回复 使用道具 举报
  单例 是保证这个类在加载的时候 内生存中 从始至终 只有一个本类对象  你上面比的例子中 图纸就是这个单例  你就是 建立 一万栋房子 图纸 始终是那一张  不知懂否?

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
我明白了,就是get函数...........
回复 使用道具 举报
看了三楼的回复,了解的更透彻了
回复 使用道具 举报
自己回去多看看视频就懂了
回复 使用道具 举报
大爱卓生 来自手机 金牌黑马 2015-3-6 02:32:21
8#
单(一个)例(实例),3楼的很赞!:P
回复 使用道具 举报
yjsf216 发表于 2015-3-5 22:54
我有些理解是:打个比方如果把类比作图纸,单例模式就好像是房子的图纸,一张图纸只可以建立一座房子,是这 ...

类是图纸的化,普通类的图纸可以得到的,你可以用图纸建n多房子
而单例是,我的图纸不公开,且我的图纸只建一个房子,你得不到,你想用可以,你必须得通过我得到房子,这里要分两种情况,
饿汉式:你找我要房子之前,我就已经建好一个房子了,你要的时候我直接把地址给你,你去用
懒汉式:你找我要房子之前,房子还没有,只有你找我要的时候,我才按图纸给你建一个让你用

评分

参与人数 1黑马币 +3 收起 理由
万合天宜 + 3 很给力!

查看全部评分

回复 使用道具 举报
qq10763582 来自手机 中级黑马 2015-3-6 07:10:38
10#
懒汉,和饿汉
回复 使用道具 举报
你可以参考毕向东老师讲解的视频,第六天的第82、83这两个视频,讲解的很详细
回复 使用道具 举报
wuyiai 来自手机 中级黑马 2015-3-6 10:09:49
12#
Http://blog.csdn.net/ssszzzbbb
可以看下这个博客   里面有一个单利模式
回复 使用道具 举报
回答的都很给力啊。加油。。。。
回复 使用道具 举报
学习了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马