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

软件设计模式概述

概述

软件设计内容

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

是什么

设计经验的总结

七个常用原则

单一职责原则

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

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

开闭原则

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

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

里氏替代原则

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

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

依赖倒转原则

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

接口隔离原则

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

合成复用原则

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

迪米特法则

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

为什么

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

怎么办

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


http://www.kler.cn/news/329398.html

相关文章:

  • 面试题:MySQL你用过WITH吗?领免费激活码
  • PHP安装后Apache无法运行的问题
  • [Redis][主从复制][上]详细讲解
  • CSS全解析
  • 滚雪球学MySQL[10.2讲]:数据库性能问题排查详解:从慢查询优化到内存与CPU使用分析
  • DES、3DES 算法及其应用与安全性分析
  • 【RabbitMQ 项目】客户端:连接模块
  • CSP 安全配置案例
  • 【设计模式-命令】
  • Elasticsearch学习笔记(1)
  • 二、词法分析,《编译原理》(本科教学版),第2版
  • 【MySQL基础刷题】总结题型(一)
  • 简单的微信小程序个人 个人详情页
  • WebUI密码被锁定
  • NCU-机器学习-作业3:基于SVM的手写字识别
  • linux ip命令使用
  • 大数据毕业设计选题推荐-热门微博数据可视化分析系统-Hive-Hadoop-Spark
  • C动态内存管理
  • 【在Linux世界中追寻伟大的One Piece】System V共享内存
  • Spring DI 笔记
  • 使用rust写一个Web服务器——单线程版本
  • 基于SSM+VUE的学生宿舍管理系统
  • 单链表的增删改查(数据结构)
  • OpenAI o1:使用限额提高,o1 模型解析
  • 基于STM32的智能家居语音控制系统:集成LD3320、ESP8266设计流程
  • 【优选算法】(第八篇)
  • 【已解决】【Hadoop】【./bin的使用】bash: ./bin/hdfs: 没有那个文件或目录
  • 基于 Transformer 的中英文翻译项目
  • .NET CORE程序发布IIS后报错误 500.19
  • 网络通信——OSPF协议(基础篇)