单子模式保证一个application中就至多只有一个instance,   注意这里界定的是一个application,   而不是一个System.如果不是一个application的话,就不能够保证了。例如:在分布式环境下,虽然单服务器端实现了Singleton,但是多服务器端(System)就有可能不能保证是Singelton。
      保证application中实现该模式的Singleton   类至多只有一个instance,   可以在一定范围内更好地确定业务逻辑,   尤其是那些保证现实生活中application中只有一个的概念。如  数据库连接池就是一个典型; 
Singleton设计模式并不能保证节省资源,这是一点需要澄清的。如果要节省资源,大可不必使用Singleton设计模式,Singleton的设计目标并不是为了节省资源,而且为了保证全局性的逻辑统一; 
Singleton设计模式与其他设计模式(如   Factory设计模式)的联合使用基本上已经成为了一种“普遍”的技巧,对Singleton的熟悉可以帮助我们在理解他人工作上和相互交流上带来方便。
 

 

 

package cn.by.DesignModel.Singleton;

/**
 * 饿汉式
 *
 */
public class SingleMod2 {
 //类加载时就建立一个该类对象,也是唯一的一个
 private static SingleMod2 single = new SingleMod2();
 //防止别人通过new关键字建立该类对象,所以声明为private
 private SingleMod2() {}
 
 
 /**
  * 得到一个该类对象
  * synchronized 为多线程同步互斥访问
  * @return  对象引用
  */
 public synchronized static SingleMod2 getInstance() {
  return single;
 }
 

 

 

 

package cn.by.DesignModel.Singleton;


/**
 * 懒汉式
 *
 */
public class SingleMod {
 
 //因为要返回一个唯一的该类对象,所以定义为静态的
 private static SingleMod single;
    //私有初始化,防止别人通过new产生一个该类对象
 private SingleMod() {}
 
 /**
  * 获取该类的对象(唯一)
  * synchronized 是多线程同步访问的互斥
  * @return  返回对象引用
  */
 public synchronized  static SingleMod getInstance() {
  //为空产生才产生一个该类对象
  if(single == null)
   single = new SingleMod();  
  return single;
   
 } 
 
}
 


 

}