当前位置: 首页 > news >正文

软件设计模式概述

概述

软件设计内容

  • 软件体系结构 — 宏观设计,模块
  • 软件设计模式 — 中间级别,类,接口,模块
  • 数据结构与算法 — 微观设计,方法

是什么

设计经验的总结

七个常用原则

单一职责原则

就一个类而言,应该仅有一个引起他变化的原因

为什么
当一个类职责过多,一个职责的变化可能影响其他职责的能力,这种耦合导致了脆弱的设计

开闭原则

软件实体(类,模块,函数) 可以扩展,不可修改
对扩展开放,对修改封闭

为什么
需求是不断变化的,不可能一开始就能写出完美的代码,这时候就需要在需求到来时,尽可能少的修改原来的代码,扩展新的功能

里氏替代原则

子类型必须能够替换掉他们的父类型
如果一个软件实体,使用的是一个父类,那么一定适用于其子类,且他察觉不到父类对象于子类对象的区别,也就是说,在软件里面,把父类都替换成子类,程序的行为没有改变

也就是说,子类继承了父类,便可以以父类的身份出现

依赖倒转原则

1.高层模块不应该依赖低层模块,两个都依赖抽象
2.抽象不应该依赖细节,细节应该依赖抽象
针对接口编程,不要对实现编程

接口隔离原则

客户端不应该依赖那些他不需要的接口

合成复用原则

优先使用对象组合,而不是通过继承来达到复用的目的
在一个新的对象里面通过关联关系(包括组合,与聚合关系)来使用一些已有的对象,使之成为新对象的一部分,新对象通过委派调用已有对象的方法来到到复用功能的目的

迪米特法则

如果两个类不直接通信,那么这两个类就不应当发生直接的相互作用,如果其中一个类需要调用另一个类的摸一个方法的话,可以通过第三者来转发这个调用

为什么

使得软件可维护,易扩展易复用

怎么办

一些场景设计模式
请看下期


http://www.mrgr.cn/news/38136.html

相关文章:

  • 【JAVA开源】基于Vue和SpringBoot的师生健康管理系统
  • # linux从入门到精通(三)
  • 【幂简集成】手机归属地查询API,精准获取号码所在地,提升数据准确率
  • flatten()
  • Python知识点:如何使用Spark与PySpark进行分布式数据处理
  • 基于SSH的酒店管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)
  • opencv-如何获取图像区域特定像素区域大小
  • 万字长文详解FreeRTOS软件定时器
  • Python in Excel作图分析实战!
  • 一个好用的服务治理组件Sentinel
  • AI大模型:揭秘AI产品经理与传统产品经理的差别与转型攻略
  • 【博弈强化学习】——UAV-BS 的联合功率分配和 3D 部署:基于博弈论的深度强化学习方法
  • 一些硬件知识(二十四)
  • C++入门(1)
  • 你知道AI模型是如何学习的吗???零基础入门到精通,收藏这一篇就够了
  • × Codeforces Round 975 (Div. 2)(A~F)
  • 如何构建出更好的大模型RAG系统?
  • 牛犇啊!LSTM+Transformer炸裂创新,精准度高至95.65%!
  • AI绘画:Stable Diffusion 终极炼丹宝典:从入门到精通
  • Android开发TextView内容从右到左滚动