软件设计原则(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的文章,这篇还是回归正题,继续来写写设计模式另一个重要的原则:单一职责原则. ...
随机推荐
- 「Docker学习系列教程」9-Docker容器数据卷介绍
通过前面8篇文章的学习,我们已经学会了docker的安装.docker常用的命令已经docker镜像修改后提交的远程镜像仓库及提交到公司的私服仓库中.接下来,我们再来学学Docker另外一个重要的东西 ...
- SpringBoot源码2——SpringBoot x Mybatis 原理解析(如何整合,事务如何交由spring管理,mybatis如何进行数据库操作)
阅读本文需要spring源码知识,和springboot相关源码知识 对于springboot 整合mybatis,以及mybatis源码关系不密切的知识,本文将简单带过 系列文章目录和关于我 涉及到 ...
- React报错之Element type is invalid
总览 产生"Element type is invalid -- expected a string (for built-in components) or a class/functio ...
- python运算符与基本数据类型
Python种类 JavaPython cPython ***** pypy 字节码 和 机器码 Python程序: 1. 终端: C:\python35\python.exe D:\1.py 解释器 ...
- Python实验报告(第8章)
实验8:模块 一.实验目的和要求 1.了解模块的内容: 2.掌握模块的创建和导入方式: 3.了解包结构的创建和使用. 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实 ...
- python之路22 hashlib、subprocess、logging模块
hashlib加密模块 hashlib模块为不同的安全哈希/安全散列(Secure Hash Algorithm)和 信息摘要算法(Message Digest Algorithm)实现了一个公共的. ...
- Java进阶篇——springboot2源码探究
1.@EnableAutoConfiguration 除了元注解之外,EnableAutoConfiguration包含了两大重要部分: 1)@AutoConfigurationPackage注解 该 ...
- Java基础学习笔记-运算符ヽ( ̄▽ ̄)و
运算符 运算符-按功能分为7种 1.赋值运算符 广义赋值运算符 +=, -=, *=, /=, %=, &=, |= 一般形式:变量名 运算符=表达式 两侧的类型不一致会进行 自动类型转换 和 ...
- mysql 简单查询
查询特定列SELECT ename,birthday FROM emp; 查询所有的select*from emp; 给列起别名select ename AS 姓名, salary AS 工资 FRO ...
- jQuery查找标签、节点操作、事件绑定、Bootstrap页面框架
jQuery查找标签.节点操作.事件绑定.Bootstrap页面框架 一.jQuery查找标签 1.各种选择器 1.基本选择器 $('#id') id选择器 $('.c1') 类(class)选择器 ...