一起学习
1.定义单例模式是对象的创建模式的一种,它保证一个类有且只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类则称为单例类。
2.使用场合
简而言之,就是任何只需要一个实例的地方.例如,窗口管理器,假脱机打印设备,数据库连接池。具体应用中,配置信息类,管理类,控制类,门面类,代理类通常被设计为单例类.
(1)配置信息类
负责配置文件的解析,通常被设计为单例类
(2)管理类
如连接池管理类,通常被设计为单例类
(3)控制类
如struts的ActionServlet类,也是单例类。
如下,只需在web.xml配置以下ActionServlet,tomcat容器自动装载后,即可完成对整个web系统提供ActionServlet实例。
Java代码:
action
org.apache.struts.action.ActionServlet
action
*.do
action
org.apache.struts.action.ActionServlet
action
*.do
|
(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;
}
} |
TAG:
设计模式
下载本文示例代码
讲解JAVA设计模式中的单例模式 (1)讲解JAVA设计模式中的单例模式 (1)讲解JAVA设计模式中的单例模式 (1)讲解JAVA设计模式中的单例模式 (1)讲解JAVA设计模式中的单例模式 (1)讲解JAVA设计模式中的单例模式 (1)讲解JAVA设计模式中的单例模式 (1)讲解JAVA设计模式中的单例模式 (1)讲解JAVA设计模式中的单例模式 (1)讲解JAVA设计模式中的单例模式 (1)讲解JAVA设计模式中的单例模式 (1)讲解JAVA设计模式中的单例模式 (1)