软件设计原则(Principles)
设计模式的从许多优秀的软件中总结出来的 , 使用设计模式能够实现可复用、可维护、开发人员之间方便沟通设计和理解代码。
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)的更多相关文章
- 一篇文章带你了解设计模式原理——UML图和软件设计原则
一篇文章带你了解设计模式原理--UML图和软件设计原则 我们在学习过程中可能并不会关心设计模式,但一旦牵扯到项目和面试,设计模式就成了我们的短板 这篇文章并不会讲到二十三种设计模式,但是会讲解设计模式 ...
- 最简单直接地理解Java软件设计原则之开闭原则
写在前面 本文属于Java软件设计原则系列文章的其中一篇,后续会继续分享其他的原则.想以最简单的方式,最直观的demo去彻底理解设计原则.文章属于个人整理.也欢迎大家提出不同的想法. 首先是一些理论性 ...
- 这样学BAT必面之软件设计原则,还不会就是我的问题
学习设计原则是学习设计模式的基础.在实际开发过程中,并不要求所有代码都遵循设计原则,我们要考虑人力.时间.成本.质量,不能刻意追求完美,但要在适当的场景遵循设计原则,这体现的是一种平衡取舍,可以帮助我 ...
- UML类图的补充及软件设计原则
UML类图的补充及软件设计原则 UML 从目标系统的不同角度出发,定义了用例图.类图.对象图.状态图.活动图.时序图.协作图.构件图.部署图等 9 种图. 1.uml补充 统一建模语言(Unified ...
- 从HTTL模板引擎看软件设计原则
HTTL (Hyper-Text Template Language) 是一个高性能的开源JAVA模板引擎, 适用于动态HTML页面输出, 可替代JSP页面, 指令和Velocity相似.作者是阿里巴 ...
- 最简单直接地理解Java软件设计原则之单一职责原则
理论性知识 定义 单一职责原则, Single responsibility principle (SRP): 一个类,接口,方法只负责一项职责: 不要存在多余一个导致类变更的原因: 优点 降低类的复 ...
- 最简单直接地理解Java软件设计原则之接口隔离原则
理论性知识 定义 接口隔离原则, Interface Segregation Principle,(ISP). 一个类对应一个类的依赖应该建立在最小的接口上: 建立单一接口,不要建立庞大臃肿的接口: ...
- 最简单直接地理解Java软件设计原则之依赖倒置原则
理论性知识 定义 依赖倒置原则,Dependence Inversion Principle (DIP) 高层模块不应该依赖低层模块.二者都应该依赖其抽象. 抽象不应该依赖细节,细节应该依赖抽象. 针 ...
- C#软件设计——小话设计模式原则之:依赖倒置原则DIP
前言:很久之前就想动笔总结下关于软件设计的一些原则,或者说是设计模式的一些原则,奈何被各种bootstrap组件所吸引,一直抽不开身.群里面有朋友问博主是否改行做前端了,呵呵,其实博主是想做“全战”, ...
- C#软件设计——小话设计模式原则之:单一职责原则SRP
前言:上篇C#软件设计——小话设计模式原则之:依赖倒置原则DIP简单介绍了下依赖倒置的由来以及使用,中间插了两篇WebApi的文章,这篇还是回归正题,继续来写写设计模式另一个重要的原则:单一职责原则. ...
随机推荐
- 关于 risrqnis
这道题里最有用的( Range Insert Subset Range Query [n?] In Set 破案了 我那五个点是因为维护不知道有什么用的东西炸了 删了就过了 题面 [JRKSJ R4] ...
- 深入浅出Seata的AT模式
目录 一.业务背景 二.Seata架构 1.核心组件 2.AT模式 三.案例分析 1.流程分析 2.写隔离 3.读隔离 四.对比XA模式 五.参考源码 单个掉队,导致集体被动摆烂: 一.业务背景 在分 ...
- pycharm 2021.2.1专业版破解
1.网址:https://gitee.com/pengzhile/ide-eval-resetter 2.点击下载.下载后直接丢进pycharm中. 3.勾选.重启 .查看
- 在Windows服务器安装禅道
1.服务器上 浏览器打开禅道官网:https://www.zentao.net/ 2.下载禅道版本,这里安装的是开源版 3.下载完成之后,一键安装 安装完成之后,即可访问:
- java中的自增运算
本文主要阐明java中的自增运算 1.当i ++ 与 ++ i作为单独语句时,作用与i = i +1一样 2.当赋值时,结果就不一样了 temp = i ++: 操作顺序:1)temp = i: 2) ...
- Redis的数据持久化
介绍 Redis 的数据持久化方案 Redis 的数据持久化主要有两大机制,AOF 日志和 RDB 快照. AOF 持久化是通过保存 Redis 服务器所执行的写命令来记录数据库状态. RDB 持久化 ...
- cs231n__3. LostFunction
CS231n 3.1 Lost Function 我们上次提到,要如何选择最优的W呢? 这就是要选择几种损失函数了. 我们要找到一种可行的方法来选择最优的W 先看简单的3个样本的例子 正式定义损失函数 ...
- pickle兼容问题
1 import pickle 2 3 with open('a.pkl',mode='wb') as f: 4 # 一:在python3中执行的序列化操作如何兼容python2 5 # python ...
- 7、解决swagger测试接口报错:TypeError: Failed to execute ‘fetch‘ on ‘Window‘: Request with GET/HEAD method cannot have body
一.Swagger报错: 1.报错类型: TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method ...
- MySql索引下推知识分享
作者:刘邓忠 Mysql 是大家最常用的数据库,下面为大家带来 mysql 索引下推知识点的分享,以便巩固 mysql 基础知识,如有错误,还请各位大佬们指正. 1 什么是索引下推 索引下推 (Ind ...