框架中常见的设计模式有哪些学习总结第一篇

2023-10-27

框架中常见的设计模式有哪些

设计模式的作用:通过设计模式写代码,设计模式可以解耦(解耦只是一种思想,代码开发的时候,把代码分开便于维护和管理,运行的时候再合并起来运行)

回顾软件设计原则

  1. 开闭原则:对扩展开放,对修改关闭(使用范围特变广)

  2. 单一职责原则:一个类,一个接口,一个方法只做一件事情保证类,接口,方法的单一性和承接性

  3. 依赖倒置原则:通过一个抽象类/接口,使各个类或者模块相互不影响,实现松耦合

  4. 接口隔离原则:尽量保证接口的纯洁性,客户端不应该依赖不需要的接口,接口也不要继承一些无关的东西

  5. 迪米特法则:最少知道原则,一个类对其所依赖的类知道的越少越好

  6. 里氏替换原则:子类可以扩展父类的功能,但是不能改变父类原有的功能

  7. 合成复用原则:尽量的使用对象的组合/聚合,不使用继承关系达到代码复用的关系

 

为什么要学习设计模式

  1. 写出优雅的代码

  2. 更好的重构项目

  3. 经典框架都在用设计模式解决问题

 

Spring中用到的设计模式

  1. 工厂模式:BeanFactory

  2. 装饰器模式:BeanWrapper

  3. 代理模式:AopProxy

  4. 单例模式:工厂本身就是一个单例模式—>ApplicationContext

  5. 委派模式:DispatcherServlet

  6. 策略模式:HandlerMapping

  7. 适配器模式:HandlerAdapter

  8. 模板方法模式:JDBCTemplate

  9. 观察者模式:ContextLoaderListener

 

可以看看书:

1.软件架构设计七大原则

2.维基百科 http://en.wikipedia.org/wiki/Design_Patterns#Patterns_by_Type

3.大话设计模式

4.Head First设计模式

5.设计模式-可服用面向对象软件基础

6.Effective Java
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

框架中常见的设计模式有哪些学习总结第一篇 的相关文章

随机推荐

  • win10开机后电脑磁盘占用百分之百解决方法

    1 我的电脑 管理 服务与应用程序 服务 superfetch 禁用 重启 2 控制面板 管理工具 服务 找到 HomeGroupListener 家庭组 服务 禁用 3 关闭自动维护计划任务 选中磁盘C 属性 工具 对驱动器进行优化和碎片
  • 小程序监听页面的返回按钮方法

    不论是微信小程序还是支付宝小程序中都没有这个生命周期函数 但是老板要求实现这个方法 只好百度 想办法解决问题 具体用户的操作流程是 从第一个页面出发 走到第二个页面 然后又返回第一个页面 以下是我具体实现的代码 在第二个页面的 onShow
  • Jmeter(十三) - 从入门到精通 - JMeter定时器 - 上篇(详解教程)

    1 简介 用户实际操作时 并非是连续点击 而是存在很多停顿的情况 例如 用户需要时间阅读文字内容 填表 或者查找正确的链接等 为了模拟用户实际情况 在性能测试中我们需要考虑思考时间 若不认真考虑思考时间很可能会导致测试结果的失真 例如 估计
  • 人工智能芯片

    发展趋势 人工智能技术研究的催化剂 新型高性能计算架构 参考寒武纪芯片 华为NPU 高通5G芯片 计算芯片发展趋势 计算芯片架构逐渐向深度学习应用优化的趋势发展 从传统的CPU为主GPU为辅的因特尔处理器转变为GPU为主CPU为辅的结构 性
  • JS逆向之HOOK注入、调试、插桩

    一 使用油猴脚本进行注入 获取Cookie的加密参数 新建油猴脚本文件 UserScript name cookie的HOOK namespace http tampermonkey net version 0 1 description
  • 写论文和做项目中遇到的问题及其解决办法

    相比Microsoft Office Word 我更推荐用WPS Office Word编写论文 感觉后者用起来更轻松 1 利用Word自带的的标题样式快速给文档设置一到三级标题 2 Word文档中具有编辑器自带标题样式的文字前面都有小黑方
  • 【YOLOv5-6.x】设置可学习权重结合BiFPN(Add操作)

    文章目录 前言 修改yaml文件 以yolov5s为例 只修改一处 将Concat全部换成BiFPN Add 打印模型参数 修改common py 修改yolo py 修改train py 1 向优化器中添加BiFPN的权重参数 2 查看B
  • 疼失鸡鸡,吊唁鸡鸡

    为了忘却的纪念 今天是我痛失鸡鸡的日子 一个好鸡鸡是很难找的 一个集群的鸡鸡跟难找的 为了吊唁我的鸡鸡 我觉得为它写一篇文章
  • Matplot pyplot绘制单图,多子图不同样式详解,这一篇就够了

    Matplot pyplot绘制单图 多子图不同样式详解 这一篇就够了 1 单图单线 2 单图多线不同样式 红色圆圈 蓝色实线 绿色三角等 2 1 4 支持的所有颜色及样式 3 使用关键字字符串绘图 data 可指定依赖值为 numpy r
  • 【BLE】蓝牙抓包器 Ellisys 使用说明

    BLE 蓝牙抓包器 Ellisys 使用说明 常用功能 设备过滤 抓包的类型 添加观察的项目 协议解析 连接过程 Connection Indication LLCP Feature Request Response LLCP Length
  • Java多线程通信-CountDownLatch(闭锁)

    一 CountDownLatch 闭锁 闭锁是一个同步工具类 它可以延迟线程的进度直到其到达终止状态 闭锁的作用相当于一扇门 在到达结束状态之前 这扇门是关闭的 并且不允许任何进程通过 当到达结束状态时 这扇门会打开并允许所有的线程通过 当
  • wangeditor3.0上传本地图片和本地视频至服务器

    1 效果 2 注意 我下载的3 0版本 3 组件 在components文件里创建一个wangEditoe vue文件
  • Java基于opencv实现图像数字识别(一)

    Java基于opencv实现图像数字识别 一 最近分到了一个任务 要做数字识别 我分配到的任务是把数字一个个的分开 当时一脸懵逼 直接百度java如何分割图片中的数字 然后就百度到了用BufferedImage这个类进行操作 尝试着做了一下
  • Vue生命周期和钩子函数详解

    Vue生命周期和钩子函数详解 Vue生命周期介绍 组件每个阶段它的内部构造是不一样的 所以一般特定的钩子做特定的事 比如Ajax获取数据就可以在mounted阶段 从Vue实例被创建开始到该实例最终被销毁的整个过程叫做VUE的生命周期 在这
  • A*算法学习笔记

    1 算法思路 1 Dijkstra算法与A 算法 1 Dijkstra算法 贪心策略 优先队列 集合S 已确定的顶点集合 初始只含源点s 集合T 尚未确定的顶点集合 算法反复从集合T中选择当前到源点s最近的顶点u 将u加入集合S 然后对所有
  • 使用myisamchk命令修复表 只能修复myisam表 速度块

    快速检查 myisamchk im var lib mysql db1 只检查没有正常关闭的表 myisamchk iFm var lib mysql db1 仅显示标的重要信息 myisamchk eis var lib mysql db
  • 【Markdown】Typora配置图片上传

    文章目录 0 前言 1 确定需求 2 开始配置 2 1 软件储备 2 2 插件安装 2 3 gitee配置 3 其他配置 3 1 获取SMMS token 参考链接 0 前言 对于喜欢写Markdown文档的人来说 Typora无疑是一个写
  • 30分钟学会如何使用Shiro

    http www cnblogs com learnhow p 5694876 html 一 架构 要学习如何使用Shiro必须先从它的架构谈起 作为一款安全框架Shiro的设计相当精妙 Shiro的应用不依赖任何容器 它也可以在JavaS
  • 宏定义详细知识点

    一 不带参数的宏定义 1 格式 define 宏名 字符串 例 define a 6 则a是宏名 凡是出现a的地方均用6替换 2 注意 宏替换是一种机械替换 不做语法检查 不是下一个语句 其后不加 define命令出现在函数的外面 有效范围
  • 框架中常见的设计模式有哪些学习总结第一篇

    框架中常见的设计模式有哪些 设计模式的作用 通过设计模式写代码 设计模式可以解耦 解耦只是一种思想 代码开发的时候 把代码分开便于维护和管理 运行的时候再合并起来运行 回顾软件设计原则 开闭原则 对扩展开放 对修改关闭 使用范围特变广 单一