posts - 37, comments - 8, trackbacks - 0, articles - 0

java与模式:单态模式

Posted on 2008-08-06 21:27 梦与桥 阅读(328) 评论(0)  编辑  收藏 所属分类: java与模式
1、功能:保证在调用期间,一个类只有一个实例存在。
2、单态模式要点:
单态模式的要点:
        §某一个类只有一个实例。
        §它必须自行创建这个实例。
        §它必须向整个系统提供这个实例。
        §构造函数私有:不被外部实例化,也不被继承。
3、使用实例:
        §数据库连接,创建数据库连接的方法, 只能为静态, 并且要保证方法的同步, 否则在多线程操作中, 有可能会创建多个实例。
        §比如建立目录的类
        §对于系统资源的控制.
        §资源管理器
        §回收站
        §打印机资源
使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收。
4、Singleton模式
第一种:
public class TestSingleton {
  
private static TestSingleton instance = new TestSingleton();

  
private TestSingleton() {}

  
public static TestSingleton getInstance() {
    
return instance;
  }

}

第二种
public class TestSingleton {
  
private static TestSingleton instance=null;

  
private TestSingleton() {}

  
public static synchronized TestSingleton getInstance() {
    
if (instance == null{
      instance 
= new TestSingleton();
    }

    
return instance;
  }

}

第三种:
  public   class  Singleton   {   
  
   
static   class  SingletonHolder   {   
     
static  Singleton instance  =   new  Singleton();   
  }
    
  
   
public   static  Singleton getInstance()   {   
     
return  SingletonHolder.instance;   
  }
    
  
}
   
5、使用Singleton注意事项:
Singleton模式看起来简单,使用方法也很方便,但是真正用好,是非常不容易,需要对Java的类 线程 内存等概念有相当的了解。,如有多个Singleton对象同时被不同的类装入器装载;在EJB这样的分布式系统中使用也要注意这种情况,因为EJB是跨服务器,跨JVM的。只要根据你的具体应用,回避一些,就能解决问题,所以单态还是可以使用的。但是在使用前慎重,自己考虑好自己的情况适合哪种情况。如果你的应用基于容器,那么Singleton模式少用或者不用,可以使用相关替代技术。
 6、不能为了用模式而用模式,要真正领会模式的意义所在。

只有注册用户登录后才能发表评论。


网站导航: