【设计模式】两大策略和六大原则
两大设计策略
1. 从背景设计:
- 在设计各部分所呈现的细节之前先创建总体概念
- 共性和可变性分析
2. 类中封装变化(适当):
- 适应未来的变化
- 只实现哪些需要的特性,避免“分析瘫痪”
六大设计原则
单一职责原则——SRP
开闭原则——OCP
里式替换原则——LSP
依赖倒置原则——DIP
接口隔离原则——ISP
迪米特原则——LOD
1. 单一职责原则(The Single Responsibility Principle SPR)
一个类应该应该有专用的职责,而不是“全家桶”,“万金油”。
好处:降低复杂度,提高类的可读性,和系统的维护性
2. 开闭原则(open-closed principle OCP)
模块,方法和类应该对扩展开放(OPEN),对修改封闭(CLOSE)。即:软件设计不对其修改就能扩展功能,用抽象去构建框架,用实现扩展细节,这样当发生修改的时候,我们就直接用抽象了派生一个具体类去实现修改。
本质:将软件设计成为新功能能够作为单独的模块加入系统,降低了集成成本。
3.里氏代换原则(The Liskov Substitution Principle LSP)
子类型必须能够替换掉它们的父类型,子类可以去扩展父类的功能,但是不能改变父类原有的功能,建立抽象,通过抽象去建立规范,然后用实现去扩展细节。 和COP是相互依存的。
子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。
子类可以增加自己独有的方法。
当子类的方法重载父类的方法时候,方法的形参要比父类的方法的输入参数更加宽松。
当子类的方法实现父类的抽象方法时,方法的返回值要比父类更严格。
4. 依赖倒置原则(dependency inversion principle DIP)
高层模块不应该依赖底层模块,两者都应该依赖其抽象,抽象不应该依赖细节, 细节应该依赖抽象。
模块间的依赖是通过抽象来发生的,实现类之间不发生直接的依赖关系,其依赖关系是通过接口是来实现的。这就是俗称的面向接口编程。
好处:具有很高的扩展性,降低了代码之间的耦合度,提高了系统的稳定性。
5. 接口隔离原则(Interface Segregation Principle ISP)
客户端不应该依赖他不需要的接口,建立单一接口,只建立需要的,剔除多余的,多余的成为另外单一新接口。
6. 迪米特法则(Law of Demeter LOD):最少知识原则
一个对象应该对其他对象保持最小的了解。不要直接关系的类不要出现在类的内部。
好处:低耦合,高内聚。
其他思考
- 小心过分依赖模式
- 模式都是发现而非发明
- 概念层次的模式和模型都是真理的抽象
- 适合某个问题的模式就在问题之中,而不是强加在问题之上。
- 模式实现的具体方式由问题本质,约束条件和需求决定。
- 使用模式警惕常见误区:浮于表面,偏见,错选,误判,削足适履。
【设计模式】两大策略和六大原则相关推荐
- 初识设计模式、软件设计的六大原则
总结:本篇文字分为两个部分.第一部分:设计模式基本常识:第二部分:软件设计中的六大原则,并详细分析了单一职责原则.(本篇文章的时间轴参考:为知笔记支撑文件夹\Java设计模式(时间序列图).vsdx) ...
- 接口隔离原则_设计模式的三大分类及六大原则
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案.这些解决方案是众多软件开发人员经过 ...
- 【设计模式】第一章 面向对象六大原则
第一章 面向对象六大原则 文章目录 第一章 面向对象六大原则 一.指导思想 二.面向对象六大原则 1.单一职责原则 2.开闭原则 3.里氏替换原则 4.依赖倒置原则 5.接口隔离原则 6.迪米特法则 ...
- 【设计模式】软件设计遵循——六大原则
软件设计遵循--六大原则 1)开闭原则 定义:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭 原则:用抽象构建框架,用实现扩展细节 优点:提高软件系统的可复用性和可维护性 2)里氏替换原则 定 ...
- 写给中高级前端关于性能优化的9大策略和6大指标 | 网易四年实践
「链接和长图失效,请大家点击阅读原文查看详情」 前言 笔者近半年一直在参与项目重构,在重构过程中大量应用「性能优化」和「设计模式」两方面的知识.「性能优化」和「设计模式」两方面的知识不管在工作还是面试 ...
- 二十三种设计模式-六大原则
二十三种设计模式 一.创建型: 单例模式.工厂模式.抽象工厂模式.原型模式.建造者模式: 二.结构型: 代理模式,装饰器模式.适配器模式.外观模式.组合模式.享元模式.桥梁模式: 三.行为型: 策略模 ...
- 神了!有人用一个项目把23种设计模式与六大原则融会贯通了
前言 设计模式分为三类,创建型,结构型和行为型.创建型比较好理解,它抽象了实例化过程,将系统与实例的创建解耦.实例由专门的工厂来创建,从而使系统针对实例的抽象接口编程,不依赖任何具体的实现.结构型和行 ...
- 书读百遍其义自见 - 六大原则 23种设计模式
作者: 西魏陶渊明 博客: https://blog.springlearn.cn/ 天下代码一大抄, 抄来抄去有提高, 看你会抄不会抄! 一.设计模式 设计模式一般分为三类:创建型模式.结构型模式. ...
- 真的很干!这篇4万字超长干货把“设计模式六大原则”解析透了!建议反复阅读。
今天整理更新一篇关于设计模式六大原则的文章,主要是学习路径类的. 以后会找机会再更面试类的文章.所以,点关注,不迷路,可以最先看到我的更新呦! 壹 | 超 级 干 货 一.单一职责原则 1.定义 首先 ...
最新文章
- 前方高能!AI 大牛 LeCun 设想下一个新前沿:摈弃深度学习的所有概率技巧,改而掌握不断转变的能量值...
- 【C 语言】文件操作 ( 配置文件读写 | 业务逻辑 | 接口设计 )
- Android调试工具之ADB
- python_5.fit()函数,transform()函数,与fit_transform()函数
- Winform中实现图片格式转换(附代码下载)
- 2020 操作系统第二天复习(习题总结)
- 的union_C语言“隐秘的角落”——union没那么简单
- Java Dao模式通过JDBC连接数据库的操作
- Fedora 10初体验
- 外设单独编址与统一编址
- 最近都在谈的「私域流量」,究竟有没有前途?
- Python让繁琐工作自动化——chapter10 日志模块
- 【Sql Server】经典SQL语句大全
- 韩顺平Java笔记(自用1)
- 三大开源bi工具_bi智能报表,好用的开源报表工具
- 网站分析基础概念之初访者
- mysql 5.6 msvcr100_mysql 5.6.46 安装到winserver2012(x64) 遇到 MSVCR100.dll is missing
- Unity实现功能之局域网实时语音
- 代码统计工具CLOC
- 计算机英语朗读音频,新课标小学英语阅读精选(MP3+中英字幕) 第72期:电脑
热门文章
- tensorflow教程 开始——数据集:快速了解 tf.data
- python中双冒号[::]切片的作用
- Intel Realsense 如何获取已连接所有摄像头的序列号参数?context() query_devices() size() camera_info device_list
- python 程序开发以及推荐机制设计
- 文件分类tkinter UI小程序,界面点击,后台自动归档到某个文件夹
- Hadoop 详细配置文档
- Non-interger Area 分类讨论 奇偶 取模 牛客练习赛95
- 计算机组成原理(哈工大刘宏伟)
- 迅为linux下串口,迅为IMX6ULL开发板Linux RS232/485驱动实验(上)
- python查询文件软件_Python小工具--多文件查找字符串fs