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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 伊廷文 中级黑马   /  2013-3-28 23:52  /  1746 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

单例模式用在什么情况下啊

点评

如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢  发表于 2013-3-29 07:37

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 使用论坛的搜索功能,可以让你事倍功半.

查看全部评分

9 个回复

倒序浏览
本帖最后由 曹玉龙 于 2013-3-29 00:10 编辑

单例设计模式用来保证对象在内存中的唯一性,如果你希望某个类只产生一个对象的话,就可以这样做了.

两种方式源代码示例

class Single
{
   privateSingle(){}
   /*
   //饿汉式,开发中常用
   privatefinal static Single s = new Single();
   publicstatic Single getInstance()
   {
      returns;
   }
*/

     //懒汉式,在多线程中可能出现安全问题,同时懒汉式也具有延迟加载的特性.
   privatestatic Single s = null;
   publicstatic Single getInstance()
   {
      if(s == null)
      {
        s= new Single();
      }
      returns;
   }

}

class SingleTest
{
   publicstatic void main(String[] args)
   {
   Singles = Single.getInstance();
   Singlea = Single.getInstance();
   //比较两个对象在内存中的唯一性
   System.out.println(s);
   System.out.println(a);
   }

}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
单例模式:解决一个类在内存中只存在一个对象。为了节省内存空间时使用。
回复 使用道具 举报
单例设计模式主要是当你只需要建立一个对象,也只能有一个对象的时候,用到!
回复 使用道具 举报
哥们 其实这样的问题论坛里面许多了,你提问的时候先收索一下

比如:
http://bbs.itheima.com/forum.php ... B%E6%A8%A1%E5%BC%8F
回复 使用道具 举报
看需求:建立一个类共其它类调用,但是其他类只能同时调用一个实例,不可多次创建多个实例。

单例设计模式保证对象唯一性要做到:
1,为了避免其他程序过多的建立对象,先禁止其他程序建立该类对象
2,还为了保证其他程序可以访问到该类的对象,只好在本类中,自定义一个对象
3,为了方便其他程序对自定义的对象的访问,可以对外提供一种访问方式

单例设计模式体现:
1,将构造函数私有化。2,在类中建立一个本类的对象。3,提供一个方法可以获取到该对象。

懒汉式:
  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. }
复制代码
饿汉式:
  1. class Single
  2. {
  3.         private static final Single s = new Single();
  4.         private Single(){}
  5.         public static Single getInstance()
  6.         {
  7.                 return s;
  8.         }
  9. }
复制代码
开发中饿汉式常用,面试中懒汉式常用,因为关乎到一个线程安全的问题。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1 赞一个!

查看全部评分

回复 使用道具 举报
很明显的例子给你说几个:
音乐播放器,说白了,如果用java语言来写一个播放器,这也是一个播放器对象,只不过这个对象的长相是我们能比较喜欢看到的而已。你能同时打开两个Windows Media Player播放器吗?
常用应用程序很多都是只能打开一个的,360,计算器,画图,这些都是应用程序,只不过是图形化了而已,等你的知识到了一定程度就会明白的。
希望能让你的境界提升那么一点,程序员也是有顿悟的。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 HM朱蛟 于 2013-3-29 05:17 编辑

学习了学习了
回复 使用道具 举报
银行业务调度系统里有个经典的单例用法。
单例在程序里就是把对象通过一个私有方法给封装起来,只能通过该方法提供的get方法来获得对象。
回复 使用道具 举报
再复习一下这个这个知识点,设计模式估计要在整体开发项目有几遍经验的时候再发现需要。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马