单例多例需要搞明白两个问题:
1. 什么是单例多例;
2. 如何产生单例多例;
3. 为什么要用单例多例
4. 什么时候用单例,什么时候用多例;
1. 什么是单例多例:
所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如action;
2. 如何产生单例多例:
在通用的SSH中,单例在spring中是默认的,如果要产生多例,则在配置文件的bean中添加scope="prototype";
3. 为什么用单例多例:
之所以用单例,是因为没必要每个请求都新建一个对象,这样子既浪费CPU又浪费内存;
之所以用多例,是为了防止并发问题;即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象状态的改变导致了对象对另一个请求做了错误的处理;
用单例和多例的标准只有一个:
当对象含有可改变的状态时(更精确的说就是在实际应用中该状态会改变),则多例,否则单例;
4. 何时用单例?何时用多例?
对于struts2来说,action必须用多例,因为action本身含有请求参数的值,即可改变的状态;
而对于STRUTS1来说,action则可用单例,因为请求参数的值是放在actionForm中,而非action中的;
另外要说一下,并不是说service或dao一定是单例,标准同第3点所讲的,就曾见过有的service中也包含了可改变的状态,同时执行方法也依赖该状态,但一样用的单例,这样就会出现隐藏的BUG,而并发的BUG通常很难重现和查找;
- 浏览: 61103 次
- 性别:
- 来自: 北京
相关推荐
Java单例模式和多例模式实例分析 单例模式是指这种设计模式,确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式的定义是:单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个...
在Java中,有多种实现单例模式的方法,每种都有其特点和适用场景。接下来,我们将深入探讨这些实现方式。 首先,我们来看**懒汉式(Lazy Initialization)**。这种实现方式是在类被首次请求时才创建单例对象,延迟...
利用Java类加载机制保证单例的唯一性,线程安全且延迟初始化。 ```java public class Singleton { private Singleton() {} private static class SingletonHolder { private static final Singleton INSTANCE = ...
### 使用Java单例模式实现一个简单的日志记录器 #### 一、单例模式简介 单例模式是一种常用的软件设计模式,在该模式中,一个类只能创建一个实例,并且提供了一个全局访问点来访问该实例。单例模式的主要优点包括...
在Java编程中,单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这种模式在需要频繁创建和销毁对象的场景中尤其有用,因为它可以节省系统资源并确保对象间的协调一致。以下是...
Java单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点。在数据库连接管理中,使用单例模式能有效控制资源,避免频繁创建和关闭数据库连接导致的性能损失和资源浪费。以下是对Java单例模式...
### Java单例模式应用研究 #### 一、单例模式概述 单例模式(Singleton Pattern)作为一种最基本的创建型设计模式,其主要目的是控制一个类的实例化过程,确保在整个应用程序中仅存在一个实例,并且该实例能够被全局...
单例模式和多例模式是软件设计模式中的两种重要类型,它们主要用来控制类的实例化过程,确保在系统中某一类只有一个实例或者多个实例。 单例模式是一种限制类的实例化过程,使得一个类在整个应用程序中只能有一个...
通过多例模式可以保证系统中,应用该模式设计的类有**固定数量**的对象产生。 **说白了,多例设计模式就是保证使用该模式的类会有固定数量的该类对象产生** #### 实现步骤 1.创建一个类, 将构造方法私有化,使其...
在Java中,经典的单例模式实现如例1所示: ```java public class ClassicSingleton { private static ClassicSingleton instance = null; protected ClassicSingleton() { // Exists only to defeat ...
Java的单例模式是一种常用的软件设计模式,它保证一个类只有一个实例,并提供全局访问点。在Android开发中,单例模式的应用尤其广泛,因为它能够有效管理资源,减少内存开销,提高性能。以下是对单例模式在Android中...
Java单例模式是设计模式中的一种,在软件开发中扮演着重要的角色。单例模式的目的是保证一个类仅有一个实例,并且提供一个全局访问点。在Java中实现单例模式有多种方法,主要包括懒汉式、饿汉式、注册式(使用容器)...
Java语言中的单例模式实现有多种方式,包括饿汉式、懒汉式和登记式单例。不同的实现方式适应不同的场景和需求,各有优劣。 首先,饿汉式单例是类加载时就会立即初始化,它的好处是实现简单,且在多线程环境下能保证...
这种方法可以保证单例对象的线程安全,但它可能会浪费资源,因为它会在类加载时就创建单例对象。下面是一个饿汉式单例的代码示例: ```java class SingleMode1 { public static final SingleMode1 s = new Single...
### JAVA单例模式应用研究 #### 一、单例模式概述 单例模式(Singleton Pattern)作为一种最常见的创建型设计模式之一,在软件开发中扮演着重要角色。它主要应用于需要对系统资源进行统一管理和控制的场景,例如...
在DCL中,`volatile`关键字是至关重要的,它能防止指令重排序,确保多线程环境下单例的正确初始化。 总结来说,单例模式在Java中应用广泛,尤其是在工具类、配置类等场景下。选择合适的实现方式取决于是否需要考虑...
Java 单例设计模式主要分为两种实现方式:饿汉式和懒汉式。这两种方式都是为了确保一个类只有一个实例,并且提供全局访问点。 ...在多线程环境下,我们需要采取适当的同步措施来保证单例的正确性。
内部类单例利用Java类加载机制保证单例的唯一性,同时兼顾了线程安全和延迟初始化。 示例4(内部类写法): ```java public class InnerClassSingleton { private InnerClassSingleton() {} private static class...