『设计模式』开发设计的七大原则,我做人还是挺有原则,那些代码呢?
23种设计模式+额外常用设计模式汇总 (持续更新)23种设计模式+额外常用设计模式汇总 (持续更新)
设计模式的七大原则:
- 单一职责原则SRP(Single Responsibility Principle)
就一个类而言,应该仅有一个引起它变化的原因。 - 开放-关闭原则OCP(Open-CLosed Principle)
一个软件的实体应该对扩展开放,对修改关闭。 - 里氏代换原则(Liskov Substitution Principle)
子类型必须能够替换他们的基类(父类)。 - 依赖倒置原则DIP(Dependence Inversion Principle)
要依赖于抽象,不要依赖于具体。 - 最少知识原则LKP(Least Knowledge Principle)或称 迪米特法则(LoD)
一个类对于其他类知道的越少越好,就是说一个对象应当对其他对象有尽可能少的了解,只和朋友通信,不和陌生人说话 - 接口隔离原则(ISP)
使用多个专门的接口比使用单一的功能更多的总接口要好 - 合成/聚合原则
要尽量使用合成/聚合,而不是继承关系达到复用的目的
1.单一职责原则SRP(Single Responsibility Principle)
所谓单一职责原则就是一个类仅有一个引起它变化的原因。这里变化的原因就是所说的“职责”。如果一个类有多个引起它变化的原因,那么也就意味着这个类有多个职责,再进一步说,就是把多个职责耦合在一起了。
单一职责原则的核心就是控制类的粒度大小、将对象解祸、提高其内聚性,如果遵循单一职责原则将有以下优点:
- 降低类的复杂度。一个类只负责一项职责, 其逻辑肯定要比负责多项职责简单得多。
- 提高类的可读性。复杂性降低,自然其可读性会提高。
- 提高系统的可维护性。可读性提高,那自然更容易维护了。
- 变更引起的风险降低。变更是必然的,如果单一职责原则遵守得好, 当修改一个功能时,可以显著降低对其他功能的影响。
2.开放-关闭原则OCP(Open-CLosed Principle)
- 所谓开放-闭合原则,指的是,一个类应该对扩展开放,最修改关闭。一般也被简称开闭原则,开闭原则是设计中非常核心的一个原则。
- 开闭原则要求的是,类的行为是可以扩展的,而且是在不修改已有代码的情况下进行扩展,也不必改动已有的源代码或者二进制代码。
- 实现开闭原则的关键就在于合理地抽象、分离出变化和不变化的部分,为变化的部分留下可扩展的方式,比如,钩子方法或者是动态组合对象等。
- 这个原则看起来也很简单。但事实上,一个系统要全部做到遵守开闭原则,几乎是不可能的,也没这个必要。适度的抽象可以提高系统的灵活性,使其可扩展、可维护,但是过度的抽象,会大大的增加系统的复杂程度。应该在需要改变的地方应用开闭原则就可以了,而不用到处使用,从而陷入过度设计。
优点:
- 对软件测试的影响
软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的测试
代码仍然能够正常运行。 - 可以提高代码的可复用性
粒度越小,被复用的可能性就越大; 在面向对象的程序设计中,根据原子和抽象编程可以提高
代码的可复用性。 - 可以提高软件的可维护性
遵守开闭原则的软件,其稳定性高和延续性强, 从而易于扩展和维护
3.里氏代换原则(Liskov Substitution Principle)
子类型(subtype)必须能够替换它们的基(父)类型。(子类可以以父类的身份出现)。
比如,如果是父类是鸟,鸟会飞。企鹅
『设计模式』开发设计的七大原则,我做人还是挺有原则,那些代码呢?相关推荐
- 『设计模式』大话西游的移魂大法竟移出来了桥接模式
23种设计模式+额外常用设计模式汇总 (持续更新) 大话西游里有那么一幕,牛魔王的妹妹使用移魂大法,使几个人的灵魂交换.我们考虑一个问题,一个哲学问题,到底他们时灵魂发生了转移,还是肉体发生了转移.到 ...
- 『设计模式』之小试牛刀
为了更好的学习设计模式,以及督促自己完成设计模式的学习,现提笔为记. 怎么的,每周至少也要学一个设计模式!!! 恳请大家的监督和不吝赐教,共同学习和进步! 内容主要参考自<设计模式之禅>以 ...
- 『设计模式』状态模式(不起花里胡哨的名字了)
23种设计模式+额外常用设计模式汇总 (持续更新) 状态模式 允许一个对象在其内部状态改变时改变它的行为,这个对象看起来似乎修改了它的类. 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复 ...
- 『设计模式』--常见面向对象设计原则
23种设计模式+额外常用设计模式汇总 (持续更新) 单一职责原则SRP(Single Responsibility Principle) 就一个类而言,应该仅有一个引起它变化的原因. 开放-关闭原则O ...
- 『设计模式』Web程序开发最基本的编程模式--MVC编程模式
23种设计模式+额外常用设计模式汇总 (持续更新) 什么是MVC编程模式 ? MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controlle ...
- 『设计模式』写代码偷懒小技巧,程序开发大智慧--享元模式
23种设计模式+额外常用设计模式汇总 (持续更新) 享元模式 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能.这种类型的设计模式属于结构型模式,它提 ...
- 『设计模式』HR:不会设计模式,你好意思来面试?(面试必备设计模式)
23种设计模式+额外常用设计模式汇总 (持续更新) 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一 ...
- 『设计模式』不看就亏了的设计模式总结
23种设计模式+额外常用设计模式汇总 (持续更新) 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一 ...
- 『设计模式』适配器模式(Adapter)
23种设计模式+额外常用设计模式汇总 (持续更新) 适配器模式(Adapter) 适配器模式把一一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作. ...
最新文章
- 加减法叫做什么运算_期中备考:数学运算定律、法则与顺序
- 05《软件需求模式》阅读笔记
- Fastboot简介
- 6月第3周回顾:广东清查ADSL共享 火狐3掀起浏览器大战
- IT与业务之间的鸿沟根源
- hadoop-eclipse-plugin使用
- 嵌入式 U 盘自动挂载
- Telnet和FTP
- linnux 流量控制模块tc_FS4008-40-08-CV-A气体质量流量计【汉川仪器】阿坝资讯
- BZOJ1007[HNOI2008] 水平可见直线
- 西门子电机选型参考一
- NVivo的节点矩阵
- jasperReports导出PDF字体加粗等样式失效问题
- 【概念】椭球面在球面上的投影
- [代码审计]DuxCMS 2.0审计
- 服务器对接qq微信聊天,java仿QQ微信聊天室功能的实现
- Linux和Windows双系统gpt,Windows+Ubuntu双系统GPTMBR引导设置
- 2019网易互娱8.9笔试
- 云计算中的存储基础知识
- 时尚简约风格的ae字幕条模板
热门文章
- Qt::WA_QuitOnClose用法
- Hopsan -- 液压、电力等行业的仿真开源软件
- c语言中1B是多少,C语言1、C语言中,运算对象必须是整型的运算符是【】A./B-查字典问答网...
- 用python查找指定格式或名称的文件及修改指定文件夹名称
- CentOS6.x下GitLab安装
- Redis之java操作篇(数据对象的存取)
- 条码软件调用ERP系统
- SaaS风暴:中国软件企业如何应对挑战?
- 金立云服务器维护,今天,咱们聊聊金立amigo的防盗功能!
- 用innerHTML给textarea的value赋值,IE下丢失换行