软件开发中的常见设计模式

单例,也是bean默认的作用域,常用于配置类等不需要重复创建且频繁使用的对象;

  • 对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销;

  • 由于 new 操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻 GC 压力,缩短 GC 停顿时间。

工厂模式,不对外提供构造方法,使得只能按照定义好的方式获得对象,常用于封装统一的返回结果,包装类里面也有体现;

beanfactory和applicationcontext都算是bean工厂

代理模式,为其他对象提供一种代理以控制对这个对象的访问,做增强;把一些通用功能抽象出来,在需要用到的地方直接使用即可,这样大大简化了代码量。我们需要增加新功能时也方便,这样也提高了系统扩展性:aop,事务日志rpc

模板方法模式 定义骨架,将一些步骤延迟到子类实现,一般通过继承实现,Spring 并没有使用这种方式,而是使用Callback 模式与模板方法模式配合,既达到了代码复用的效果,同时增加了灵活性。jdbcTemplate

观察者模式,它表示的是一种对象与对象之间具有依赖关系,当一个对象发生改变的时候,这个对象所依赖的对象也会做出反应。可以实现订阅通知类功能,spring的事件驱动模型,比如我们每次添加商品的时候都需要重新更新商品索引

适配器模式 ,接口不兼容的那些类可以一起工作;Spring AOP 的增强或通知(Advice)使用到了适配器模式;Spring预定义的通知要通过对应的适配器,适配成 MethodInterceptor接口(方法拦截器)类型的对象;springmvc中适配器匹配具体的controller;

装饰者模式,装饰者模式可以动态地给对象添加一些额外的属性或行为。相比于使用继承,装饰者模式更加灵活。简单点儿说就是当我们需要修改原有的功能,但我们又不愿直接去修改原有的代码时,设计一个Decorator套在原有代码外面。不修改原有代码进行增强,多用于IO类

相关推荐
禅思院18 分钟前
前端请求取消与调度完全指南:从 AbortController 到企业级优先级架构
前端·设计模式·前端框架
小bo波32 分钟前
用匿名内部类优雅地计算方法执行时间
java·设计模式·性能测试·模板方法模式·lambda·代码优化·匿名内部类
写代码的小阿帆2 小时前
行为型设计模式之观察者(发布-订阅)模式
设计模式
王_teacher2 小时前
23种设计模式全解析(GoF 设计模式)
设计模式·软考·软件设计师·软考中级
阿坤带你走近大数据3 小时前
分别介绍下java主流的开发框架、设计模式与对应编程语言的高级特性
java·开发语言·设计模式
geovindu3 小时前
go: Coroutines Pattern
开发语言·后端·设计模式·golang·协程模式
Anastasiozzzz4 小时前
构建健壮软件系统的基石:深入解析面向对象设计七大原则
开发语言·javascript·设计模式·ecmascript
qq_297574671 天前
设计模式系列文章(基础篇第19篇):中介者模式——封装交互关系,解耦网状依赖
设计模式·交互·中介者模式
AI大法师1 天前
老牌媒体怎么从“出版物更新”走到“品牌系统升级”
大数据·人工智能·设计模式·新媒体运营
野生技术架构师1 天前
Java 23 种设计模式:从踩坑到精通 —— 开篇及系列介绍
java·开发语言·设计模式