[Java基础知识] [Java高级编程] [Java网络编程] [J2EE]
 [开发工具] [中间件] [Web开发] [J2ME] [JSP] [Web开发]
 [Java与数据库] [Java开源] [设计模式] [在线文档]
下载中心
[Java教程] [开发工具] [代码源码]
[Oracle数据库] [视频教程]

讲解JAVA设计模式中的单例模式 (1)

发布时间:2008-3-23 21:03:39     来源:赛迪网    作者:赛迪网

 

【赛迪网-IT技术报道】1.定义

单例模式是对象的创建模式的一种,它保证一个类有且只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类则称为单例类。

2.使用场合

简而言之,就是任何只需要一个实例的地方.例如,窗口管理器,假脱机打印设备,数据库连接池。具体应用中,配置信息类,管理类,控制类,门面类,代理类通常被设计为单例类.

(1)配置信息类

负责配置文件的解析,通常被设计为单例类

(2)管理类

如连接池管理类,通常被设计为单例类

(3)控制类

如struts的ActionServlet类,也是单例类。

如下,只需在web.xml配置以下ActionServlet,tomcat容器自动装载后,即可完成对整个web系统提供ActionServlet实例。

Java代码:

<servlet>   
    <servlet-name>action</servlet-name>   
    <servlet-class>   
         org.apache.struts.action.ActionServlet   
    </servlet-class>           
</servlet>   
<servlet-mapping>   
    <servlet-name>action</servlet-name>   
    <url-pattern>*.do</url-pattern>   
</servlet-mapping>  

    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>
             org.apache.struts.action.ActionServlet
        </servlet-class>        
    </servlet>
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

(4)门面类

说到门面类,就不能不提门面(Facade)模式。客户端与多个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。这个统一的门面(Facade)对象就是门面类。在门面模式中,通常只需要一个门面类,并且此门面类只有一个实例,换言之它是一个单例类。但这不是绝对的。

(5)代理类

在Jive中,使用代理模式实现权限访问的入口,就采用了单例模式。

3.单例模式在Java语言的实现

单例模式在Java语言的实现上有三种情况:饿汉式单例类,懒汉式单例类,登记式单例类。

(1)饿汉式单例类

饿汉式单例类饿汉式单例类是在Java 语言里实现得最为简便的单例类。在类被加载时,就会将自己实例化。

Java代码:

public class Singleton2{      
    //注意这是private    
    private static Singleton2 theInstance = new Singleton2();      
    //这里提供了一个供外部访问本class的静态方法,可以直接访问     
    public static Singleton2 getInstance(){      
        return theInstance;     
    }      
}    
   

public class Singleton2{   
    //注意这是private 
    private static Singleton2 theInstance = new Singleton2();   
    //这里提供了一个供外部访问本class的静态方法,可以直接访问  
    public static Singleton2 getInstance(){   
        return theInstance;  
    }   
}


发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
  相关文章
   
  • 上一个JAVA文章:

  •  
  • 下一个JAVA文章:
  •        
      网友评论
      精彩友情推荐  

  • 关于我们 | 版权申明 | 网站地图 | 广告指南 | 友情链接 | 联系我们
  • Copyright (C) 2003-2008 Javafan.net, All Rights Reserved 版权所有 Java爱好者 京ICP备05010995号