黑马程序员技术交流社区

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

作者: 李贤贤    时间: 2013-3-14 17:11
标题: 单例设计模式
什么是单例设计模式?它具有什么特点,在什么情况中用到它?
作者: 马甲大王    时间: 2013-3-14 17:36
单例模式有一下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。
  单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
我面试时考到的例子:
  1. public class Singleton {

  2.     private static Singleton uniqueInstance = null;



  3.     private Singleton() {

  4.        // Exists only to defeat instantiation.

  5.     }



  6.     public static Singleton getInstance() {

  7.        if (uniqueInstance == null) {

  8.            uniqueInstance = new Singleton();

  9.        }

  10.        return uniqueInstance;

  11.     }

  12.     // Other methods...

  13. }
复制代码

作者: HM刘博    时间: 2013-3-14 18:48
单例设计模式的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
我们在学习基础视频时直接触到了它的两种形式,一种是饿汉式,一种是懒汉式。
第一种,饿汉式:
  1. public class Singleton
  2. {
  3.          //在自己内部定义自己的一个实例,只供内部调用
  4.          private static Singleton instance = new Singleton();
  5.          private Singleton()
  6.          {
  7.           //do something
  8.           }
  9.          //这里提供了一个供外部访问本class的静态方法,可以直接访问
  10.           public static Singleton getInstance()
  11.            {
  12.            return instance;
  13.             }
  14. }
复制代码
第二种懒汉式
  1. public class Singleton
  2. {
  3.          private static Singleton instance = null;
  4.          private Singleton()
  5.           {
  6.          //do something
  7.            }
  8.          public static Singleton getInstance()
  9.          {
  10.                   if(instance==null)
  11.                   {
  12.                   instance = new Singleton();
  13.                     }
  14.                 return instance;
  15.           }
  16. }
复制代码

作者: 李贤贤    时间: 2013-3-14 20:05
{:soso_e142:}




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