spring中用到哪些设计模式
1.工厂模式,这个很明显,在各种BeanFactory以及ApplicationContext创建中都用到了;
2.模版模式,这个也很明显,在各种BeanFactory以及ApplicationContext实现中也都用到了;
3.代理模式,在Aop实现中用到了JDK的动态代理;
4.单例模式,这个比如在创建bean的时候。
5.Tomcat中有很多场景都使用到了外观模式,因为Tomcat中有很多不同的组件,每个组件需要相互通信,但又不能将自己内部数据过多地暴露给其他组件。用外观模式隔离数据是个很好的方法。
6.策略模式在Java中的应用,这个太明显了,因为Comparator这个接口简直就是为策略模式而生的。Comparable和Comparator的区别一文中,详细讲了Comparator的使用。比方说Collections里面有一个sort方法,因为集合里面的元素有可能是复合对象,复合对象并不像基本数据类型,可以根据大小排序,复合对象怎么排序呢?基于这个问题考虑,Java要求如果定义的复合对象要有排序的功能,就自行实现Comparable接口或Comparator接口.
7.原型模式:使用原型模式创建对象比直接new一个对象在性能上好得多,因为Object类的clone()方法是一个native方法,它直接操作内存中的二进制流,特别是复制大对象时,性能的差别非常明显。
8.迭代器模式:Iterable接口和Iterator接口 这两个都是迭代相关的接口,可以这么认为,实现了Iterable接口,则表示某个对象是可被迭代的;Iterator接口相当于是一个迭代器,实现了Iterator接口,等于具体定义了这个可被迭代的对象时如何进行迭代的
暂时总结那么多,以后发现持续更新。。。。。。
spring中用到哪些设计模式相关推荐
- 面试官:Spring中用了哪些设计模式?
spring中常用的设计模式达到九种,我们举例说明. 以后再也不怕面试官问我:Spring中用了哪些设计模式了. 1.简单工厂模式 又叫做静态工厂方法(StaticFactory Method)模式, ...
- spring中用到的设计模式及应用场景
spring中用到的设计模式及应用场景 1.工厂模式:在Beanfactory和applicationContext创建中都用到了 2.单例模式:Bean默认就是单例模式,单例模式只允许创建一个对象, ...
- Spring中用了哪些设计模式
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范.好了,话 ...
- Spring中用到的设计模式
目录 编辑 1.模板模式 1.JDK->AQS,基于AQS创建锁 2.Spring IOC容器的初始化 3.Spring 依赖注入(IOC 控制反转): 4.Spring AOP: 5.Spr ...
- spring中用到的9种设计模式
spring中用到了9种设计模式,学习spring的源码以及设计模式,可以提高开发人员软件设计以及开发的水平,写出更加优雅的代码. 文章目录 简单工厂(非23种设计模式中的一种) 工厂方法 单例模式 ...
- 力学笃行系列之Spring和JDK设计中用到的设计模式
设计模式 Spring中用到了那些设计模式 简单工厂模式 工厂方法 单例模式 代理模式 观察者模式 JDK中的设计模式 Singleton(单例) Runtime Factory(静态工厂) Clas ...
- 面试官:谈谈Spring中用到了哪些设计模式?
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案. Spring 框架中广泛使用了不 ...
- Spring中用到的九种设计模式
spring中常用的设计模式达到九种,我们举例说明: 第一种:简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式的实质是由 ...
- 工作中用到的设计模式?
我在X游戏接入平台中使用了模板方法模式,场景:研发的游戏需要推向不同的渠道,每个渠道的用户登录和充值接口的实现都不太一样,而X游戏平台作为一个游戏接入不同渠道的服务平台需要保证游戏接入的一致性,以及消 ...
最新文章
- hive数据导入导出
- 关于ACCESS的事务与存储过程的调用
- 玩转Python? 一文总结30种Python的窍门和技巧!
- vue方法调用失败后多次调用_浅析Vue中 computed / watch / methods的区别
- 鱼腥草可以随便吃吗?
- 让VMware ESXi 5.5与Windows时间服务器同步
- 【SQL】IN、EXISTS和表连接三者的效率比较
- linux 如何从源码包安装软件?
- python的if和else、for、while语法_Python中的if、while、for 语法及实例
- 星岚技术 Win10 x64 装机版 V2021.5【带驱动包】
- Arcgis空间连接
- 子午线弧长计算公式matlab,椭球面上的几种弧长计算和大地线
- mt管理器主题修改教程_领不了的QQ画图红包教程
- J2me xmlReader的轻量级实现
- 基于无电离层组合/非差非组合混合观测模型的精密单点定位-阅读笔记
- 电脑上的ofd格式文件如何打开呢_OFD格式的文件怎么打开预览?,来充电吧
- 流体力学——流体动力学
- laravel vs symfony 优缺点
- 工序质量评价及改进(转载)
- android手机电话号码,Android开发:实现添加系统联系人(手机号码,姓名)
热门文章
- python安全攻防---信息收集---ICMP主机探测 以及optionparser的使用
- UVA 10635——Prince and Princess
- UVA 536——Tree Recovery
- uva 10570—— Meeting with Aliens
- 213. 打家劫舍 II golang 动态规划
- NAU8810相关问题
- 【VS 2017 C语言 汇编语言】如何使用VS 2017,通过反汇编查看C语言代码对应的32位x86汇编语言 VS 2017单步调试的使用
- 我的MarkDown入门
- centos7.0利用yum快速安装mysql8.0
- 验证部分表单是否重复