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

设计形式之单例(Singleton)模式(一)

2012-06-30 
设计模式之单例(Singleton)模式(一)一、什么是模式?软件的模式最初起源于建筑学的模式,对于java设计师而且,

设计模式之单例(Singleton)模式(一)
一、什么是模式?软件的模式最初起源于建筑学的模式,对于java设计师而且,java源代码是软件的基本组成部分,而这些源代码汇聚的"形",其中有些“形”是反复出现的,构成了对一些典型的问题的典型解决方案,于是就有人把它总结为模式。为了便于相互交流和沟通,人们就给这些形定义了一个可以区别的名字。
二、根据“形”的尺度模式可以分成:“代码模式”,也就是有语句组成的“形”;“设计模式”,也就是有类和对象组成的“形”;“架构模式”,也就是由大尺度的构件组成的“形”。
三、什么是单例模式?单例模式是确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
  要点:一,该类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
  <1>.饿汉式
  

       /**饿汉式*/       public class Singleton       {          private static final Singleton _instance = new Singleton();          /**私有的默认构造*/          private Singleton(){          }          /**静态工厂方法*/          public static Singleton getInstance()          {              return _instance;          }       }   

    当Singleton这个类被加载是,静态变量_instance会被初始化,此时类的私有构造汇被调用。Singleton的唯一实例就被创建了。Java语言中单例类的一个最重要的特点是类的构造是私有的,从而避免了外界利用构造直接创建出任意多的实例。由于构造是私有的,由此此类不能被继承。
<2>.懒汉式
  与饿汉式相同的是,类的构造是私有的。与饿汉式不同的是,懒汉式单例模式在第一次被引用时将自己实例化。如果加载器是静态的,那么懒汉式单例被加载是不会将自己实例化。代码如下:
/**懒汉式*/ public class Singleton {   private static Singleton       _instance = null;   /**私有的默认构造*/   private Singleton(){}   /**静态工厂方法,返回唯一实例*/   public synchronized static Singleton getInstance()   {          if(_instance==null)          {             _instance = new Singleton();          }          return _instance;   } }

热点排行