六大基本原则

  • 总原则
    • 原则

总原则

开放-封闭原则:对修改进行封闭,在原有程序需要拓展的时候,不能去修改原有的代码逻辑,而是进行拓展,实现一个热插拔(可以新增或者舍弃),这样可以使程序的扩展性更好,易于维护和升级

原则

1.单一原则:如果一个类会发生变更,就应该将类进行拆分,否则会发生混乱。比如我们有一个T管理p1,p2,当p1发生变化的时候 就可能会导致p2也发送变化。

  • 优点

    • 降低类的复杂度,一个类只负责一项职责。
    • 提高类的可读性,可维护性
    • )降低变更引起的风险
  1. 里氏替换原则 :任何基类出现的地方,子类都能够替换它。 在继承中就是遵循里氏替换原则,所以原则上我们不应该去重载或者重写方法
  2. 依赖倒转原则:高层模块不应该依赖底层模块,两者都应该依赖其抽象,抽象不应该依赖细节, 细节依赖抽象,在java中抽象指的就是抽象类和接口,而细节就是具体实现的类,抽象制定规范,细节交给实现类去展现。
  3. 接口隔离原则:每个接口不应该存在被子类不需要实现的方法。如果不然,就需要将接口进行拆分,使用多个隔离的接口会比单个(多个集合)的效果好的多。


    这里注意的是单一职责注重职责,而接口隔离原则注重对接口依赖的隔离;二,单一职责是约束类,其次是方法,针对的是程序中的实现和细节;而接口隔离原则约束的是接口,针对的是抽象,程序整体框架的构建。

5.迪米特原则(最少知道法则):一个类对自己依赖的类知道的越少越好,换句话说就是对依赖类不管有多复杂,我们应该将他封装在内部,通过public方法对外提供,
6.开闭原则:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭。用抽象构建框架,用实现扩展细节。
当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
当我们遵循前面介绍的5大原则,以及使用23中设计模式的目的就是遵循开闭原则。

设计模式6大基本原则相关推荐

  1. 面向对象设计模式5大基本原则

    "宇宙万物之中,没有一样东西能像思想那么顽固."        一爱默生 首先明确模式是针对面向对象的,它的三大特性,封装.继承.多态. 面向对象设计模式有5大基本原则:单一职责原 ...

  2. PCB电路设计10大基本原则

    PCB电路设计10大基本原则 PCB设计规范与指南 by xfire PCBpcb设计规范 原则一: 避免过孔via紧挨着SMT焊盘 如果未盖油塞孔的via,我们在layout时将过孔打的过于靠近SM ...

  3. 设计模式01-七大设计原则

    设计模式01-七大设计原则 文章目录 设计模式01-七大设计原则 开闭原则-Open Close 依赖倒置原则-Dependence Inversion 单一职责原则-Simple ResponsiB ...

  4. 设计模式 — 6大设计原则(依赖倒置和接口隔离原则)

    设计模式 依赖倒置原则 示例 一 示例 二 依赖的三种写法 总结 接口隔离原则 实例 一 总结 依赖倒置原则 依赖倒置原则(Dependence Inversion Principle,DIP)这个名 ...

  5. 设计模式6大原则-开闭原则

    设计模式6大原则-开闭原则 定义:一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. 开闭原则理念就是当需求改变时,希望在不改变原有代码的前提下,通过扩展模块.函数来满足新需求. 开闭原则是其他 ...

  6. js倒计时代码最简单的_代码设计开发-6大基本原则解读(最简单扼要的理解)

    前言 相信做过编程开发的都应该听说过设计模式,设计模式是历史上的编程大牛经过不断的探索,总结出来的一整套经验的总和.他们总结出来这23种设计模式,告诉我们编程按照这些编程的设计模式可以让我们代码的可重 ...

  7. 红橙Darren视频笔记 网络请求优化方案 OOP面向对象 6大基本原则

    参考链接 https://www.jianshu.com/p/e1d9ddc86c7d 先看几个demo demo的目的很简单 就是发送一个Http请求 先给出几个工具类的代码 各个demo都依赖工具 ...

  8. 设计模式之七大基本原则

    做什么事都需要遵循一些准则,设计模式也不例外.我们在设计一些设计模式时,一般遵循如下七项基本原则,它们分别是: 单一职责原则 (Single Responsibility Principle) 开放- ...

  9. 8 种架构设计模式优缺点大曝光 | 原力计划

    作者 | 程序员Tony 责编 | 王晓曼 出品 | CSDN博客 什么是架构 我想这个问题,十个人回答得有十一个答案,因为另外的那一个是大家妥协的结果,哈哈,我理解,架构就是骨架. 人类的身体的支撑 ...

最新文章

  1. Fabric权限管理和策略
  2. opencv进阶学习笔记13:图像形态学操作大全(膨胀,腐蚀,开闭,黑帽,顶帽,梯度)python版
  3. JUC原子类-框架(一)
  4. 信号量sem_wait()的使用
  5. util.java_TelnetUtil.java
  6. 信息奥赛一本通的递推练习
  7. Spark数据本地性
  8. stm32cubeide调试查看函数值_STM32CubeIDE使用初探
  9. C#仿QQ皮肤—更新DataGridView的鼠标跟随效果
  10. 浅谈如何删除JSP编译后的空行
  11. 改变了的Windows MediaPlayer9.0SDK控制集
  12. 手把手教你使用LabVIEW OpenCV dnn实现物体识别(Object Detection)含源码
  13. Java学习笔记分享之Dubbo篇
  14. python的pyaudio教程入门_Python音频操作工具PyAudio上手教程详解
  15. 对大学的规划 计算机专业,对计算机专业的认识及你大学四年的规划与设想
  16. 机器学习之层次聚类及代码示例
  17. 淘宝网站的设计与排版
  18. java实现银行卡卡号 Luhm 校验算法
  19. 杭州的旅游景点有哪些传说的民间故事
  20. Unity-黑暗之魂复刻-角色摄相机

热门文章

  1. Blizzard(暴力技巧+精度问题)
  2. 尚硅谷-----JS高级
  3. 在新窗口中打开PDF
  4. 讲一讲雪崩,击穿,穿透
  5. k8s The connection to the server 10.209.213.55:443 was refused - did you specify the right host or p
  6. iOS 13的CarPlay车载上手体验
  7. ffmpeg解析MP4封装的avc1编码问题
  8. 使用python将歌词文件(.lrc文件)转换成字典及遍历获取文件夹内所有lrc文件并以lrc格式显示出来
  9. QMediaPlayer播放音频文件
  10. Dagger2实战详解以及Hilt的使用