一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Java 设计模式至单态模式(SingleTon)

时间:2013-08-06 编辑:简简单单 来源:一聚教程网

类型:创建型设计模式

意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

适用性:

  • 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时
  • 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时

结构:

singleton.png

Java实现SingleTon模式的方式常用的有两种方法,第一种是把构造函数写成private的,在类中创建一个静态的私有对象,并通过getInstance方法获取这个对象;第二种方式在类中声明一个静态的私有变量,通过getInstance方法获取,但是要把这个方法设置为线程安全的(加synchronized修饰)。

方法一

 代码如下 复制代码
public class SingleTon {
 private static SingleTon instance = new SingleTon();
 
 private SingleTon(){
  
 }
 
 public static SingleTon getInstance(){
  return instance;
 }
}

方法二

 代码如下 复制代码
public class Singleton { 
 
 private static Singleton instance = null;
 
 public static synchronized Singleton getInstance() { 
  //不用每次都进行生成对象,只是第一次使用时才创建对象
  //使用的是lazy initialization的思想
  if (instance==null)  
   instance = new Singleton();  
  return instance;
  }

一般来说,第一种方法比较安全。第二种方法不太安全,毕竟不能保证所有Singleton类的对象都是通过getInstance方法获取,有可能通过Singleton instance = new Singleton()就直接创建一个对象了。

热门栏目