• 2004-03-04

    读《Effective Java》-笔记2

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://pcmanlin.blogbus.com/logs/110900.html

    读《Effective Java》-笔记2

    Chapter 2 创建和销毁对象

    简介:
    Item2:
    通过私有构造器强化“单例”属性――单例模式 

    全文:

    Item2:
    通过私有构造器强化“单例”属性――单例模式
    Singleton-单例,是指“只能被实例化一次”的类,一般是指系统中具有唯一性的组件,通常有两种方法实现单例,它们都基于:
            1)
      私有的构造器
            2)
      使用一个public的静态成员

    方法一:
       1)
      私有的构造器,只有在初始化类的public静态成员的时候才被调用,而且是唯一的一次调用。
        2)
      使用一个public的静态成员,提供给客户这个类的唯一实例,这个public的静态成员是final的,它用来存储这个类的唯一实例。

    优点:
       1)
      成员的声明中包含了这个类,清楚地说明了类是一个单例模式的,因为这个成员是public static的,特别是final的,这个成员只能包含相的对象引用。
        2)
      带来一些效率上的优势,但是优秀的Java虚拟机可以将第二种方法中的静态工厂方法的调用用内联来消除第一种方法的这种优势。

    方法二:提供一个静态工厂方法代替public静态final成员,通过调用这个静态工厂方法返回相同对象的引用。
    优点:

       1)
         可以灵活的改变设计,将类改为不再是单例模式,但是不需要修改类的API。
        2)
         稍加修改,就可以安全的为每个线程提供类的实例

     

     


    收藏到:Del.icio.us




    引用

    下面Blog引用了该文: