Singleton(单态)

中心思想:

是保证在Java应用程序中,一个类Class只有一个实例存在


主要作用:
Singleton
模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。

使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。 

Singleton
也能够被无状态化。提供工具性质的功能,


具体操作步骤:
1,private构造方法
2,private静态成员引用
3,public的静态方法提供给外部使用。

 1 public   class  Singleton  {
 2    private  Singleton() {}
 3    // 在自己内部定义自己一个实例,是不是很奇怪?
 4    // 注意这是private 只供内部调用
 5 private   static  Singleton instance  =   new  Singleton();
 6
 7    // 这里提供了一个供外部访问本class的静态方法,可以直接访问  
 8    public   static  Singleton getInstance()  {
 9      return  instance;   
10    }
 
11 }
 
12

上面是饿汉式,可以多线程。

public class LazySingleton
{
  /**
     * @label Creates
     */
    private static LazySingleton m_instance = null;
   
    private LazySingleton() { }

    (synchronized )public static LazySingleton getInstance()
    {
     if (m_instance == null)
     {
         m_instance = new LazySingleton();
     }
     return m_instance;
 }

  
}



只适合单线程的条件下,如果使用多线程的话,那么必须采用synchronized来修饰方法,使得每个线程进入此方法前都要等待别的线程离开此方法。也就是说不会有2个线程同时进入方法。

posted on 2009-04-11 01:46 luofeng225 阅读(204) 评论(0)  编辑  收藏 所属分类: 设计模式


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


网站导航:
 
<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

导航

统计

公告

我曾经听到这么一个故事: 一个年轻的程序员问一个老程序员(一个比较牛逼的公司的CTO) 年轻程序员: 你为什么这么牛X., 就好像没有你不会的。老程序员: 积累的。年轻程序员: 怎么才能积累到您的程度呢。我每天都在积累。但是似乎都没有感觉到进步。老程序员: 我从20岁开始做到了一件事情,直到今天,而且尽可能地保证不间断。年轻程序员: 到底是什么? 老程序员: 我每天保证自己有2个小时在学习新的东西。

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

相册

收藏夹

Java Website

java技术博客

搜索

最新评论

阅读排行榜

评论排行榜