Spring中的单例模式
Spring中的单例模式
单例模式的介绍
1.1 简介
保证整个应用中某个实例有且只有一个
1.2作用
保证一个类仅有一个实例,并且提供一个访问它的全局访问点。
单例模式的优点和缺点
单例模式的优点:
-单例模式可以保证内存里只有一个实例,减少了内存的开销。
-可以避免对资源的多重占用。
-单例模式设置全局的访问点,可以优化和共享资源的访问。
单例模式的缺点:
-单例模式一般没有接口,扩展困难,如果要扩展,则除了修改原来的代码,没有第二种途径,违背开闭原则。
-在并发测试中,单例模式不利于代码调试。在调试过程中。如果单例中的代码没有执行完,也不能拟生成一个新的对象。
-单例模式的功能代码通常写在一个类中,如果功能设计不合理,则很容易违背单一职责原则。
1. 单例模式的结构
单例模式的主要角色如下。
- 单例类:包含一个实例且能自行创建这个实例的类。
- 访问类:使用单例的类。
其结构如图 1 所示。
package com.qf;
public class SingletonPattern{
public static void main(String[] args){}
}
class Singleton{
//因为单例模式保证一个类仅有一个实例
//所以使用private static修饰
private static Singleton singleton;
//singlenton是什么开始实例化
private Singleton(){}
public static Singleton getInstance(){
return null;
}
}
饿汉式
即在类加载的时候就进行实例化
package com.qf;
public class SingletonPattern{
public static void main(String[] args){}
}
class Singleton{
private static Singleton singleton = new Singlenton();
private Singleton(){}
public static Singleton getInstance(){
return singleton;
}
}
懒汉式
相反在类加载的时候不进行实例化,在第一次使用的时候在进行实例化
package com.qf;
public class SingletonPattern{
public static void main(String[] args){}
}
class Singleton{
private static Singleton singleton;
private Singleton(){}
//添加synchronized原因是为了防止多次序列化
//出现多次实例化的原因是,如果A ,B线程同时为空就会出现两次实例化
public synchronized static Singleton getInstance(){
if(singleton == null)
singleton = new Singleton();
return singleton;
}
}
Spring中的单例模式
Spring中默认为单例模式
单例模式
单例模式,默认为饿汉单例,可以通过@Lazy注解实现懒汉单例
Spring中的单例模式的更多相关文章
- Spring中的单例模式和多例模式的应用
在Spring的配置中,Bean的scope属性中存在两种模式:singleton(单例模式).prototype(多例模式) singleton 单例模式:对象在整个系统中只有一份,所有的请求都用一 ...
- Spring中的设计模式学习
Spring提供了一种Template的设计哲学,包含了很多优秀的软件工程思想. 1. 简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. ...
- Spring中的设计模式
[Spring中的设计模式] http://www.uml.org.cn/j2ee/201301074.asp [详解设计模式在Spring中的应用] [http://www.geek521.c ...
- spring 中的设计模式
https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=2247485205&idx=1&sn=63455d2313776d ...
- 详解设计模式在Spring中的应用
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了其设 ...
- Spring中的用到的设计模式大全
spring中常用的设计模式达到九种,我们举例说明: 第一种:简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式的实质是由一 ...
- 详解设计模式在Spring中的应用---转载
Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范.好了,话不多说,开始今天的内容. spring中常用的设计模式达到九种,我们一一举例: 第一种:简单工厂 又叫 ...
- Spring中的用到的设计模式
应该说设计模式是我们在写代码时候的一种被承认的较好的模式.好的设计模式就像是给代码造了一个很好的骨架,在这个骨架里,你可以知道心在哪里,肺在哪里,因为大多数人都认识这样的骨架,就有了很好的传播性.这是 ...
- Spring中常用的23中设计模式
1.spring 中常用的设计模式有23中 分类 设计模式 创建型 工厂方法模式(FactoryMethod).抽象工厂模式(AbstractFactory).建造者模式(Builder).原型 ...
随机推荐
- 定义Anroid SO崩溃位置
E:\android-ndk-r13b\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin> arm-linux-a ...
- 【LeetCode】718. Maximum Length of Repeated Subarray 解题报告(Python)
[LeetCode]718. Maximum Length of Repeated Subarray 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxu ...
- 【LeetCode】201. Bitwise AND of Numbers Range 解题报告(Python)
[LeetCode]201. Bitwise AND of Numbers Range 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/prob ...
- C. Propagating tree
C. Propagating tree time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- leetcode5225最大相等频率
题目 正整数数组nums,找到满足条件的最长前缀,返回其长度.该前缀满足:删除一个元素后,剩下的每个数字出现的次数相同. ps:如果删除后没有元素存在,也可以认为每个数字有相同的次数. 数组长度:[2 ...
- 3942 - Remember the Word
3942 - Remember the Word 思路:字典树+dp dp[i]前i个字符,能由给的字串组成的方案数,那么dp[i] = sum(dp[i-k]);那么只要只要在字典树中查看是否有字串 ...
- LightOJ - 1003 Drunk
One of my friends is always drunk. So, sometimes I get a bit confused whether he is drunk or not. So ...
- Chapter 7 Confounding
目录 7.1 The structure of confounding Confounding and exchangeability Confounding and the backdoor cri ...
- RazorEngine.NetCore 相见恨晚,它让我彻底放弃了T4模板
在dbfrist 时代,用T4模板生成代码,貌似还没有感觉到别扭.但是到了codefrist 后,我想要实体生成生成备注,我就得想方设法的去把备注弄到数据库,然后 还要处理模型中类型像枚举这种属性,渐 ...
- PowerShell 管道符之Select的使用方法【一】
之前我文章中我们略微提到过管道符的操作,但并不多,这篇主要讲解一下详细的使用方法 假设我们要对数组中的数字1-10中我想要从右往左换句话说就是从字符串最后一个字开始倒过来往前数截取6个子字符串时可以这 ...