【设计模式】设计模式的八大原则

news/2024/9/18 0:54:10/ 标签: 设计模式

设计模式的八个原则:

  1. 依赖倒置原则
    • 高层次的代码(稳定)不应该依赖低层次的代码(变化)
    • 抽象的代码不应该依赖具体的代码。
  2. 开放封闭原则:类模块应该开放扩展的,而其原先的代码尽量封闭不可改变。
  3. 单一职责原则:一个类应该仅有一个变化的原因,该变化隐含了它的职责,职责太多时会导致扩展时对代码东拉西扯,造成混乱。
  4. 替换原则:子类必须能够替换它的基类(IS-A),继承可以表达类型抽象。
  5. 接口隔离原则:接口应该小而完备,不该强迫用户使用多余的方法。
  6. 优先使用组合而不是继承:继承通常会让子类和父类的耦合度增加、组合的方式只要求组件具备良好定义的接口。
  7. 封装变化点
  8. 针对接口编程,而不是针对实现编程

http://www.ppmy.cn/news/1524765.html

相关文章

盘点2024年大家都在用的录屏工具

现在录屏工具的使用范围越来越广了。我的深切体验是有很多人愿意为知识付费了,但是到线下培训的话很多人时间不一定能协调的来,这就导致涌现了不少的录屏课程。这次我们来探讨下要怎么录屏才能呈现更好的效果。 1.福昕录屏大师 链接达达:ww…

GPT撰写开题报告教程——课题确定及文献调研

撰写开题报告是一项复杂而重要的任务,需要涵盖从主题选择到文献综述、研究方法等多个环节。借助AI,如ChatGPT,可以显著提高这一过程的效率以及内容的质量。本文将详细探讨如何一步步利用ChatGPT撰写开题报告。 一、开题报告内容 一个清晰的…

Docker Swarm 管理

案例一概述及前置知识点 概述: 创鑫公司给云计算工程师提出新的要求,可将集群中所有Docker Engine整合进一个虚拟的资源池,通过执行命令与单一的主Swarm进行沟通,而不必分别和DockerEngine沟通。在灵活的调度策略下,…

MongoDB基本语法

MongoDB 基本语法详解 MongoDB 是一种面向文档的 NoSQL 数据库,支持灵活的数据结构和高扩展性,广泛应用于现代应用程序开发。MongoDB 采用 BSON(Binary JSON)格式存储数据,使得其能够存储复杂嵌套的结构。 1. 数据库…

大数据安全之Kerberos

Kerberos 是一个网络身份验证协议,旨在提供强身份验证,尤其是在开放网络环境中。它最早由麻省理工学院(MIT)开发,用于在不安全的网络环境中安全地验证用户身份。Kerberos 协议的设计旨在防止窃听、重放攻击和网络中的其…

2024年9月12日(k8s环境及测试 常用命令)

一、环境准备及测试 1、报错处理: kube-system calico-node-5wvln 0/1 Init:0/3 0 16h kube-system calico-node-d7xfb 0/1 Init:0/3 0 16h ku…

mysql学习教程,从入门到精通,SQL AND OR 运算符(12)

1、SQL AND & OR 运算符 在本教程中,您将学习如何在子句中使用ASELECT column1_name, column2_name, columnN_nameFROM table_nameWHERE condition1 AND condition2;ND&OR运算符,WHERE以根据多个条件过滤记录。 1.1、根据条件选择记录 …

专注LabVIEW 做好一件事

在一次LabVIEW的系统改造项目中,遇到一个设备,操作手册居然还是基于DOS系统的。不难看出,这套设备虽然年代久远,但背后的技术积淀极为深厚。事实证明,这套系统在业内享有很高的认可度,由国外团队开发&#…

asio中的异步accept分析

简介 主要分析linux平台下的&#xff0c;即reactive_socket_service_base和reactive_socket_service 发起 由basic_socket_acceptor调用async_accept&#xff0c;前提是需要调用open创建socket添加到reactor中。其定义为 template <typename SocketService, typename Ac…

高级 ECharts 技巧:自定义图表主题与样式

ECharts 是一个强大的数据可视化库&#xff0c;提供了多种内置主题和样式&#xff0c;但你也可以根据项目的设计需求&#xff0c;自定义图表的主题与样式。本文将介绍如何使用 ECharts 自定义图表主题&#xff0c;以提升数据可视化的吸引力和一致性。 1. 什么是 ECharts 主题&…

开源免费的工贸一体行业ERP管理系统

引言 在当今数字化浪潮汹涌澎湃的时代&#xff0c;中小企业面临着前所未有的挑战与机遇。如何实现数字化转型发展&#xff0c;成为了众多中小企业主心头的大事。 据相关数据显示&#xff0c;目前我国中小企业数量已经超过了 4000 万户&#xff0c;然而成功实现数字化转型的比例…

B2064 斐波那契数列

题目描述 斐波那契数列是指这样的数列&#xff1a;数列的第一个和第二个数都为 11&#xff0c;接下来每个数都等于前面 22 个数之和。 给出一个正整数 aa&#xff0c;要求斐波那契数列中第 aa 个数是多少。 输入格式 第 11 行是测试数据的组数 nn&#xff0c;后面跟着 nn 行…

C++20 协程:异步编程的新纪元

C20 引入了协程&#xff08;coroutines&#xff09;&#xff0c;这是一种全新的异步编程模型&#xff0c;使得编写异步代码变得更加简洁和直观。本文将详细介绍 C20 协程的概念、功能演变及其在实际项目中的应用。通过本文&#xff0c;你将了解到协程的基本原理、语法和如何利用…

阿里巴巴1688中国站商品搜索API返回值深度解析与实战应用

在电商数据分析和市场调研中&#xff0c;阿里巴巴中国站&#xff08;现常指1688.com&#xff09;的商品搜索API扮演着至关重要的角色。这些API提供了丰富的商品信息&#xff0c;为商家和开发者在商品定价、营销策略制定、市场调研等方面提供了强有力的数据支持。本文将深入探讨…

有关WSL和docker的介绍

目录标题 如何利用在windows上配置docker实现linux和windows容器修改WSL默认安装&#xff08;也就是linux子系统&#xff09;目录到其他盘 如何利用在windows上配置docker实现linux和windows容器 wsl的基本命令&#xff1a;参考网页 docker入门到实践&#xff1a;参考网页 官方…

PDF扫描版文字识别OCR

PDF扫描版文字识别OCR 最近需要有对PDF扫描版进行文字可识别的需求&#xff0c;这里介绍一款工具挺好用的 这是一款开源的OCR工具 github地址 https://github.com/hiroi-sora/Umi-OCR 主要功能及特点 免费&#xff1a;本项目所有代码开源&#xff0c;完全免费。方便&#…

前端封装组件可视化库

在 Vue 项目中&#xff0c;如果你希望封装的组件库能够可视化并调整默认参数&#xff0c;你可以考虑使用以下工具和库&#xff1a; Storybook: Storybook 是一个非常流行的工具&#xff0c;用于构建和展示 UI 组件。它允许你以独立的方式开发组件&#xff0c;并能够直观地调整组…

发送成绩的app或小程序推荐

老师们&#xff0c;新学期的第一次月考马上开始&#xff0c;是不是还在为如何高效、便捷地发布成绩而头疼呢&#xff1f;别担心&#xff0c;都2024年了&#xff0c;我们有更智能的方式来解决这个问题&#xff01; 给大家安利一个超级实用的工具——易查分小程序。这个小程序简…

数据结构之数组矩阵存储

目录 一、数组存储 1. 一维数组 2. 二维数组 二、特殊矩阵存储 1. 对称矩阵 2. 三角矩阵 3. 三对角矩阵 三、总结 一、数组存储 1. 一维数组 2. 二维数组 二维数组按列优先存储的下标对应关系&#xff08;A _m*_n&#xff09; 二、特殊矩阵存储 1. 对称矩阵 上、下三…

MySQL--库的操作

文章目录 1.创建数据库2.创建数据库案例3.字符集和校验规则3.1默认字符集3.2默认校验规则3.3查看系统默认字符集以及校验规则3.4查看数据库支持的字符3.5查看数据库支持的字符集校验规则3.6校验规则对数据库的影响不区分大小写查询&#xff1a;排序结果&#xff1a;区分大小写查…