黑马程序员技术交流社区

标题: 单例模式 [打印本页]

作者: 伊廷文    时间: 2013-3-28 23:52
标题: 单例模式
单例模式用在什么情况下啊
作者: 曹玉龙    时间: 2013-3-29 00:07
本帖最后由 曹玉龙 于 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);
   }

}


作者: _王涛    时间: 2013-3-29 00:11
单例模式:解决一个类在内存中只存在一个对象。为了节省内存空间时使用。

作者: 黑马19我最牛    时间: 2013-3-29 00:16
单例设计模式主要是当你只需要建立一个对象,也只能有一个对象的时候,用到!
作者: 蔡陶军    时间: 2013-3-29 00:31
哥们 其实这样的问题论坛里面许多了,你提问的时候先收索一下

比如:
http://bbs.itheima.com/forum.php ... B%E6%A8%A1%E5%BC%8F
作者: HM李超    时间: 2013-3-29 01:02
看需求:建立一个类共其它类调用,但是其他类只能同时调用一个实例,不可多次创建多个实例。

单例设计模式保证对象唯一性要做到:
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. }
复制代码
开发中饿汉式常用,面试中懒汉式常用,因为关乎到一个线程安全的问题。
作者: HM马明宇    时间: 2013-3-29 01:30
很明显的例子给你说几个:
音乐播放器,说白了,如果用java语言来写一个播放器,这也是一个播放器对象,只不过这个对象的长相是我们能比较喜欢看到的而已。你能同时打开两个Windows Media Player播放器吗?
常用应用程序很多都是只能打开一个的,360,计算器,画图,这些都是应用程序,只不过是图形化了而已,等你的知识到了一定程度就会明白的。
希望能让你的境界提升那么一点,程序员也是有顿悟的。
作者: HM朱蛟    时间: 2013-3-29 05:13
本帖最后由 HM朱蛟 于 2013-3-29 05:17 编辑

学习了学习了
作者: VOIDMAIN    时间: 2013-3-29 22:08
银行业务调度系统里有个经典的单例用法。
单例在程序里就是把对象通过一个私有方法给封装起来,只能通过该方法提供的get方法来获得对象。
作者: 郭孟涛    时间: 2013-3-29 22:25
再复习一下这个这个知识点,设计模式估计要在整体开发项目有几遍经验的时候再发现需要。




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