设计模式常用的七大原则总结
设计模式常用的七大原则:
单一职责原则
在方法上(方法很少,逻辑足够简单)或类上遵守单一职责原则都可以。
可以降低类的复杂性
接口隔离原则
客户端不应该依赖他不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。
接口隔离原则和单一职责原则非常类似。单一职责原则要求接口的职责是单一的,而接口隔离原则要求接口尽量细化,它们有异曲同工之妙,都是要让我们的接口功能尽量单一,尽量小。
依赖倒转原则(DIP)
高层模块不应该依赖低层模块,两者都应该依赖其抽象
抽象不应该依赖细节,细节应该依赖抽象
里氏替换原则
- 任何基类可以出现的地方,子类一定可以出现。
- LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
- 在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。
- 1.子类必须完全实现父类的方法
2.子类可以有自己的个性
3.覆盖或实现父类的方法时输入参数可以被放大,覆写或实现父类的方法时输出结果可以被缩小 - 任何基类可以出现的地方,子类一定可以出现。里氏替换原则是继承复用的基石,只有当衍生类可以替换基类,软件单位的功能不受到影响时,即基类随便怎么改动子类都不受此影响,那么基类才能真正被复用
开闭原则ocp
- 软件实体应该对扩展开放,对修改关闭
- 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
迪米特法则
- 又叫作最少知识原则
- 个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
- 迪米特法则不希望类之间建立直接的联系。如果真的有需要建立联系,也希望能通过它的友元类来转达。
- 它要求一个对象应该对其他对象有最少的了解
- 迪米特法则还有一个英文解释是:talk only to your immediate friends(只和直接的朋友交流)。什么是朋友呢?每个对象都必然会与其他的对象有耦合关系,两个对象之间的耦合就会成为朋友关系。那么什么又是直接的朋友呢?我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友。迪米特法则要求只和直接的朋友通信。
- 对外除了提供的public方法,不对外泄漏任何信息。
合成复用原则
- 软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现
设计模式常用的七大原则总结相关推荐
- 设计模式常用的七大原则
1) 单一职责原则 2) 接口隔离原则 3) 依赖倒转原则 4) 里氏替换原则 5) 开闭原则 ocp 6) 迪米特法则 7) 合成复用原则 设计模式的目的 编写软件过程中,程序员面临着来自 耦合性 ...
- 设计模式常用的七大原则之③【依赖倒转】原则
文章目录 概念 案例 代码1.0 解决思路 依赖关系传递的三种方式和应用案例 接口传递 构造方法传递 set传递 依赖倒转原则的注意事项和细节 概念 依赖倒转原则(Dependence Inversi ...
- Java设计模式---设计模式概述及七大原则
网课指路:尚硅谷Java设计模式(图解+框架源码剖析)_哔哩哔哩_bilibili 设计模式介绍 1) 设计模式是程序员在面对同类软件工程设计问题所总结出来的有用的经验, 模式不是代码 ...
- 设计模式中的七大原则(代码 + 图解)
文中涉及的代码:链接:提取码:tqjq 文章目录 设计模式 1. 目的 2. 分类 3. 原则 3.1单一职责原则 3.2 接口隔离原则 3.3 依赖倒转原则 3.4 里氏替换原则 3.5 开闭原则 ...
- 设计模式-软件架构设计七大原则及开闭原则详解
前言 在日常工作中,我们使用Java语言进行业务开发的时候,或多或少的都会涉及到设计模式,而运用好设计模式对于我而言,又是一个比较大的难题.为了解决.克服这个难题,Remi酱特别开了这个博客来记录自己 ...
- 大话设计模式之设计模式遵循的七大原则
最近几年来,人们踊跃的提倡和使用设计模式,其根本原因就是为了实现代码的复用性,增加代码的可维护性.设计模式的实现遵循了一些原则,从而达到代码的复用性及增加可维护性的目的,设计模式对理解面向对象的三大特 ...
- 设计模式-软件设计七大原则
目录 综述 1.开闭原则 1.1开闭原则的定义 1.2开闭原则的作用 1.3开闭原则的实现方法 2.里氏替换原则 2.1里氏替换原则的定义 2.2里氏替换原则的作用 2.3里氏替换原则的实现方法 3. ...
- java设计模式——浅显易懂之七大原则
大家好,我是老王.一名正在学java设计模式的大三学生.准备连载java设计模式系列供自己以后复习和大家学习讨论.由于本人是初学者,站的角度更多是它是什么,我们要怎么做的角度进行思考,有出错的地方欢迎 ...
- 设计模式(5)之七大原则之开闭原则
一.定义 开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作<面向对象软件构造>(Object Or ...
最新文章
- 前沿 | 全球最具影响力开源数据库峰会开幕在即 阿里云精彩议题先睹为快
- 6月Top 20榜单出炉啦! 万万没想到区块链大佬竟在忙这个...
- TikTok信息流广告怎么做才有效果?我从100个营销短视频中总结了这些方法
- 漫画:深入浅出 ES 模块
- oracle 一次删除多张表
- 如何处理Partner function occurs less than specified in customizing error message
- [Unity优化]批处理03:静态批处理
- DbVisualizer 8 解决中文乱码问题
- 【公测中】阿里云发布国内首个大数据双活容灾服务,满足高要求大数据灾备场景
- android开发学习笔记系列(6)--代码规范
- EM算法在二维高斯混合模型参数估计中的应用
- 用 WebGL 探索动画和交互技术(一个学习案例)
- 2022最新WiFi大师小程序V3.0.9独立版源码
- 网络安全防护-----本地组策略的使用
- 微信支付记录删除后怎么恢复?赶紧收藏这两个小技巧
- C语言课设飞机票订购系统
- html微信投票,微信投票报名h5系统制作
- VS Code + Latex + SumatraPDF 环境(实用)
- 基于JAVA面相高校学生的图书共享平台计算机毕业设计源码+数据库+lw文档+系统+部署
- 简单知识——跨页面信息传递
热门文章
- 【SQLYOG】SSH ERROR:UNABLE TO OPEN CONNECTION:GETHOSTBYNAME:UNKNOWN ERROR牵引出来的一系列问题...
- STM32驱动PCF8563,使用模拟IIC
- 数字图像处理实验(七)| 形态学图像处理{生成结构元素strel、腐蚀运算imerode、膨胀运算imdilate、开运算imopen、闭运算imclose}(附代码和实验截图、汉字视力表项目、总结)
- 1553B总线基础知识及扩展
- Scala的类型擦除 和 TypeTags、Manifests的用法
- 中国饲料添加剂行业产值、产量和进出口量分析「图」
- XTUOJ-1163-ASCII
- 通达信股本变迁文件(gbbq)解密方法
- Cisco Packet Tracer 思科模拟器SSH配置
- 俞渝年轻图片_组图:2007中国职场女性榜样-俞渝