`
eneasy
  • 浏览: 126328 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

单例模式

阅读更多
一. 单例模式
整理自 《java与模式》阎宏编著


1.意图:

    确保某个类只有一个实例,并且为该类提供一个全局的访问点。

2.类图:

  

3.原理:
    a.将构造函数定义成私有使得不能通过构造函数来创建对象。
    b.定义一个静态的方法提供公共接口,用于访问维一的实例。



4.特征:
    a.单例类只能有一个实例.
    b.单例类自己创建这个唯一的实例.
    c.单例类必须给所有其他对象提供这个实例.



5.说明:

   在EJB,JINI,RMI等分布式的java系统中使用单例模式时,尽量不要使用有状态(stateful)的。



6.使用案例:

    一些资源管理器常常设计成单例模式,这些资源包括外部资源:譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干个通信端口,系统应当集中管理这些通信端口,以避免一个通信端口被两个请求同时调用, 回收站等。 内部资源:譬如,系统配置文件管理器,日志管理器,系统记数管理部件,错误输出部件。



7.代码:

// Singleton.java

package singleton;



public class Singleton

{

      private static Singleton instance;

      /**

       * 不允许通过构造字来实例化

       */

      private Singleton()

      {

      }



      /**

       * 使用synchronized关键字,保障Singleton的线程安全

       */

      public synchronized static Singleton getInstance()

      {

           if (instance == null)

           {

                 instance = new Singleton();

           }

           return instance;

      }

}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics