设计模式的从许多优秀的软件中总结出来的 , 使用设计模式能够实现可复用、可维护、开发人员之间方便沟通设计和理解代码。

Tips

  • 对于模式的使用 , 不能拘泥于格式 , 事实上根据需要模式是可以演化的
  • 另外要适可而止 , 比如一个简单的方法就能搞定的事情 , 就没有必要滥用设计模式了

设计原则


面向对象设计原则 (SOLID)

  • 单一职责原则 (Single Responsibility Principle SRP):一个对象应该只包含单一的职责 ,并且该职责被完整的包括在一个类中;或者这样描述:一个类应该有且仅有一个引起变化的因素
  • 开闭原则 (Open Closed Principle ,OCP):它指出软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。这意味着您可以在不更改其现有代码的情况下向软件实体添加新功能或行为
  • 里氏替换原则 (Liskov Substitution Principle ,LSP):它指出子类应该能够在不影响程序功能的情况下替换其超类, 这意味着子类不应违反其超类的任何约定或期望
  • 接口隔离原则 (Interface Segregation Principle ,ISP):不应强制任何代码依赖于它不使用的方法, 这可以通过使软件更加模块化和独立来减少副作用和所需更改的频率。
  • 依赖倒置原则 (Dependence Inversion Principle ,DIP):它指出高级模块应该依赖于抽象而不是具体的实现 , 这有助于解耦高层和低层模块,更容易更改低层模块而不影响高层模块

另外两个面向对象设计原则

  • 合成复用原则(Composite Reuse Principle ,ISP ): 优先使用对象组合 , 而不是继承来到达复用目的
  • 迪米特法则 (Law of Demeter ,LoD):旨在减少对象之间的耦合。它指出一个对象应该只与靠近它的对象交互,例如它自己、它的参数、它的局部变量等,它还指出一个对象不应该知道其他对象的内部细节

其他设计原则

  • 不要重复原则 (DRY:Don't Repeat Yourself):是指编程过程中不写重复代码,将能够公共的部分抽象出来
  • 保持简单原则 (KISS:keep it simple):简单应该是设计的目标之一,应该避免不必要的复杂性 。KISS 原则这个术语是美国海军于 1960 年创造的,它可以应用于界面设计、产品设计、软件开发等各个学科
  • 用不上原则? (YAGNI:You Ain’t Gonna Need It):它指出程序员在认为必要之前不应添加功能, 这个想法是为了避免在将来可能不会使用或不需要的功能上浪费时间和资源。

软件设计原则(Principles)的更多相关文章

  1. 一篇文章带你了解设计模式原理——UML图和软件设计原则

    一篇文章带你了解设计模式原理--UML图和软件设计原则 我们在学习过程中可能并不会关心设计模式,但一旦牵扯到项目和面试,设计模式就成了我们的短板 这篇文章并不会讲到二十三种设计模式,但是会讲解设计模式 ...

  2. 最简单直接地理解Java软件设计原则之开闭原则

    写在前面 本文属于Java软件设计原则系列文章的其中一篇,后续会继续分享其他的原则.想以最简单的方式,最直观的demo去彻底理解设计原则.文章属于个人整理.也欢迎大家提出不同的想法. 首先是一些理论性 ...

  3. 这样学BAT必面之软件设计原则,还不会就是我的问题

    学习设计原则是学习设计模式的基础.在实际开发过程中,并不要求所有代码都遵循设计原则,我们要考虑人力.时间.成本.质量,不能刻意追求完美,但要在适当的场景遵循设计原则,这体现的是一种平衡取舍,可以帮助我 ...

  4. UML类图的补充及软件设计原则

    UML类图的补充及软件设计原则 UML 从目标系统的不同角度出发,定义了用例图.类图.对象图.状态图.活动图.时序图.协作图.构件图.部署图等 9 种图. 1.uml补充 统一建模语言(Unified ...

  5. 从HTTL模板引擎看软件设计原则

    HTTL (Hyper-Text Template Language) 是一个高性能的开源JAVA模板引擎, 适用于动态HTML页面输出, 可替代JSP页面, 指令和Velocity相似.作者是阿里巴 ...

  6. 最简单直接地理解Java软件设计原则之单一职责原则

    理论性知识 定义 单一职责原则, Single responsibility principle (SRP): 一个类,接口,方法只负责一项职责: 不要存在多余一个导致类变更的原因: 优点 降低类的复 ...

  7. 最简单直接地理解Java软件设计原则之接口隔离原则

    理论性知识 定义 接口隔离原则, Interface Segregation Principle,(ISP). 一个类对应一个类的依赖应该建立在最小的接口上: 建立单一接口,不要建立庞大臃肿的接口: ...

  8. 最简单直接地理解Java软件设计原则之依赖倒置原则

    理论性知识 定义 依赖倒置原则,Dependence Inversion Principle (DIP) 高层模块不应该依赖低层模块.二者都应该依赖其抽象. 抽象不应该依赖细节,细节应该依赖抽象. 针 ...

  9. C#软件设计——小话设计模式原则之:依赖倒置原则DIP

    前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做“全战”, ...

  10. C#软件设计——小话设计模式原则之:单一职责原则SRP

    前言:上篇C#软件设计——小话设计模式原则之:依赖倒置原则DIP简单介绍了下依赖倒置的由来以及使用,中间插了两篇WebApi的文章,这篇还是回归正题,继续来写写设计模式另一个重要的原则:单一职责原则. ...

随机推荐

  1. Springboot 2.3.1配置拦截器遇到的坑

    1.多个配置类继承WebConfigureSupport或实现WebConfigure接口导致拦截器失效 2.拦截器中的bean无法正常注入,SpringBoot项目的Bean装配默认规则是根据App ...

  2. PHP8.1.10手动安装教程及报错解决梳理

    安装教程参考一:https://www.cnblogs.com/haw2106/p/9839655.html 安装教程参考二:https://www.cnblogs.com/jiangfeilong/ ...

  3. 简易博客页面小项目 html css

    项目预览 代码 html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  4. go语言的grpc环境安装

    本文直接用安装包的方式安装. 源码编译安装参考:https://www.cnblogs.com/abc36725612/p/14288333.html 环境 golang的docker image d ...

  5. 自研ORM框架实现工作单元模式

    平时我们使用事务,需要显示的Try Catch 并且开启事务 提交事务 异常回滚事务 三步骤,使用工作单元后则只需要Commit. 1.接口定义 1 /// <summary> 2 /// ...

  6. C++进阶(位图+布隆过滤器的概念和实现+海量数据处理)

    位图 概念 位图: 所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景.通常是用来判断某个数据存不存在的. 适用场景: 如果我们需要对大量的数据进行处理,判断该数据在不在,比如40 ...

  7. java中json字符串与实体类对象相互转换

    1.问题描述 有一个需求是这样的,把实体类转为Json字符串存入redis中,然后再把redis中存放的实体类Json字符串插入数据库中.因此需要涉及到json字符串与实体类对象的相互转换. 2.产生 ...

  8. (3)go-micro微服务项目搭建

    目录 一 微服务项目介绍 二 go-micro安装 1.拉取micro镜像 2.生成项目目录 三 项目搭建 使用DDD模式开发项目: 四 最后 一 微服务项目介绍 账户功能是每一个系统都绕不开的一部分 ...

  9. 诗词API

    1.js依赖 /** * 今日诗词V2 JS-SDK 1.2.2 * 今日诗词API 是一个可以免费调用的诗词接口:https://www.jinrishici.com */ !function(e) ...

  10. win32com操作word API精讲&项目实战 预告

    对win32com的使用和研究有好一段时间了,想起本人刚开始做word编程项目时的各种痛苦:网上能找到的都是简单的示例,如同hello word一般,嚼之无味又无可奈何.读office的word接口文 ...