设计模式六大原则(简单总结)

一、单一职责原则

通俗来说即一个类只负责一项职责(实现类要职责单一),可以降低类的复杂度,提高系统的可读性、可维护性,降低类修改时对其他功能的影响

二、里氏替换原则

即子类继承父类时,子类可以扩展父类的功能,但不能改变父类原有的功能(不要破坏继承体系)

三、依赖倒置原则

1、上层模块不应该依赖底层模块,它们都应该依赖于抽象。

2、抽象不应该依赖于细节,细节应该依赖于抽象。

即面向接口编程

四、接口隔离原则

为各个类建立专用的接口,注重对接口依赖的隔离,但也需要注意接口尽量小的前提下需要适度,否则会造成接口数量过多,使程序设计变得复杂(设计接口要精简单一)

五、迪米特法则

降低类与类之间的耦合,高内聚、低耦合

六、开闭原则

类、模块、方法应该对扩展开放、对修改关闭,即用抽象构建框架,用实现扩展细节

Original: https://www.cnblogs.com/nisu-blog/p/15649557.html
Author: Nss、
Title: 设计模式六大原则(简单总结)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576152/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java面试题(二)–MySQL

    1 存储引擎 1、简单描述一个Mysql的内部结构? MySQL的基本架构示意图:大体来说,MySQL可以分为 server层和 存储引擎层两部分。 ① server层包括连接器、…

    数据库 2023年5月24日
    0108
  • 了解HTML/CSS/JS/JQuery/ajax等前端知识

    什么是HTML 超文本标记语言 浏览器通过识别相应的标签来加载页面 通过HTTP协议传输,不是编程语言 HTML常用标签 title script style link meta …

    数据库 2023年6月16日
    0149
  • 滑动窗口

    滑动窗口,记录左边界,通过map避免字符重复。 class Solution { public int lengthOfLongestSubstring(String s) { i…

    数据库 2023年6月11日
    084
  • Vue router-link点击事件不生效

    在学习路由时,想给 贴个代码: index.html 命名视图 <router-link v-on:click=&qu…

    数据库 2023年6月16日
    0113
  • 我竟然才知道slf4j里还有个MDC

    大家好久不见,我是walking。今天给大家带来一个日志方面的知识——MDC,不知道大家认识不,反正我是最近刚知道的😂 初见MDC 前两天看项目中的代码,无意中看到一个自定义的线程…

    数据库 2023年6月11日
    0156
  • 一次线上MySQL死锁告警原因排查

    项目场景:一次线上MySQL死锁告警原因排查最近处理了一次在线数据警报,记录下来。 [En] Recently handled an online data alarm, reco…

    数据库 2023年5月24日
    061
  • 从源码角度谈谈open_files_limit的生成逻辑及”Too many open files”的解决思路

    “Too many open files”是一个比较常见的错误,不仅仅是在 MySQL 中。只要是在 Linux 中启动的进程,都有可能遇到这个错误。 究其…

    数据库 2023年6月11日
    0164
  • Java List分批处理

    工作中经常遇到分批处理的问题,比如将一个List列表中的数据分批次保存至数据库中。如果列表中数据条目很大,比如1000万条以上,mysql中 max_allowed_packet …

    数据库 2023年6月14日
    0110
  • SQL与数据库编程学习笔记-day2

    SQL与数据库编程学习笔记-day2 修改数据库密码; – 登出数据库(修改数据库密码必须在数据库外执行命令); * – Ps:登出命令:quit* 操作完…

    数据库 2023年5月24日
    088
  • Java8 Stream

    什么是Stream Java8 API添加了一个新的抽象称为流Stream,可以以一种声明的方式处理数据,给我们操作集合(Collection)提供了极大的便利。Stream将要处…

    数据库 2023年6月6日
    096
  • 内部类

    🐓内部类 可以将一个类定义在另一个类或方法中,这样的类称为内部类 将类定义在另一个类中成员的位置 public class Inner { // 定义在类内部 class Demo…

    数据库 2023年6月14日
    084
  • 前后端数据交互利器–Protobuf

    Protobuf 介绍 简而言之,Protobuf 是 Google 开源的一款用于处理前后端数据交互格式的工具。通常来讲前后端使用的编程语言是不同的,使用 Protobuf无需多…

    数据库 2023年6月16日
    0108
  • Minio的安装与使用

    Minio的安装与使用 一、Minio介绍 MinIO 是在 Apache License v2.0 下发布的高性能对象存储. 就是说是个存东西的玩意,比较方便配好启动就能访问,也…

    数据库 2023年6月6日
    0112
  • git 开发规范

    开发总结最重要的是文档和开发流程 文档最重要:记录开发学习的内容,可以是一种总结,此为其一。留下文档可助后生快速入门,减少学习和指导成本,此为其二。来日需要对项目二次开发或者重构追…

    数据库 2023年6月9日
    0153
  • 上传代码到GitHub仓库

    上传代码到GitHub仓库 准备工作 意思是自从 21 年 8 月 13 后不再支持用户名密码的方式验证了,需要创建个人访问令牌(personal access token)。 这…

    数据库 2023年6月14日
    099
  • CentOS7 安装MySQL5.7企业版(商业版)及修改my.cnf默认datadir、socket路径后无法启动的处理方法

    一、清理环境 查看是否已安装 rpm -qa |grep -i mysql rpm -qa |grep -i mariadb –(centos7默认系统自带的查看版本号…

    数据库 2023年5月24日
    0152
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球