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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李贤贤 中级黑马   /  2013-3-14 17:11  /  1704 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么是单例设计模式?它具有什么特点,在什么情况中用到它?

3 个回复

正序浏览
{:soso_e142:}
回复 使用道具 举报
单例设计模式的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
我们在学习基础视频时直接触到了它的两种形式,一种是饿汉式,一种是懒汉式。
第一种,饿汉式:
  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. }
复制代码
回复 使用道具 举报
单例模式有一下特点:
  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. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马