首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

java设计方式(单例模式)

2012-10-09 
java设计模式(单例模式)单例模式是一种特殊的工厂方法模式,它适用于一个类只有一个实例的情况,比如窗口管

java设计模式(单例模式)
  单例模式是一种特殊的工厂方法模式,它适用于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统。典型的情况是,那些对象的实例能够被整个软件系统的不同对象访问,因此需要一个全局的访问指针,这便是众所周知的单例模式的应用。当然这只有在不再需要任何多于一个的实例的情况下出现。
  通过单例模式你可以:
  ●确保一个类只有一个实例被建立。
  ●提供了一个对对象的全局访问指针。
  ●在不能影响单例类的客户端的情况下允许将来有多个实例。
  单例模式的实例在全局中有且只有一个,并且该实例必须由自身创建,不能够被克隆。为了满足这些要求,一个标准的单例模式需要包含如下4个要素:
  (1)拥有一个私有的静态实例,该实例禁止外部访问。
  (2)拥有私有的默认构造函数,防止使用构造函数进行实例化。
  (3)拥有一个静态工厂方法,并且必须是同步的,防止多线程环境同时执行。
  (4)重写clone()函数,并返回当前实例对象,默认的clone()函数会创建新的实例。

  根据以上4点要求,完成的标准单例模式代码如下:

public class SingletonFactory{  //(1)私有的防止外部引用  private static SingletonFactory _instance = null;  //(2)私有的默认构造函数,防止使用构造函数进行实例化  private SingletonFactory(){}  //(3)单例静态工厂方法,同步防止多线程环境同时执行  synchronized public static SingletonFactory getInstance(){    if(_instance == null){      _instance = new SingletonFactory();    }    return _instance;  }  //(4)重写clone()函数,默认的该函数会创建新的实例  public SingletonFactory clone(){      return getInstance();  }}


  使用单例模式有一个前提条件:就是在一个系统中某一个类的实例必须只有一个,如果可以有多个实例存在,就不能够使用单例模式。以上的说法比较抽象,具体的可以应用在如下场景:
  ●系统的全局变量,存储区域
  ●系统的全局配置文件
  ●系统的全局操作函数
  由此可见,只要希望在全局使用一个统一的对象,就可以使用单例模式。

  java中的应用----日历单例类Calendar.

热点排行