<设计模式> 七大原则

设计模式七大原则

  1. 开放封闭原则:对扩展开放,对修改关闭。这意味着在设计模式中,我们应该尽可能地将代码的扩展和修改分开处理,对于可以通过扩展来实现的功能,我们应该选择扩展代码,而对于必须修改现有代码才能实现的功能,我们应该避免修改现有代码。
  2. 单一职责原则:一个类应该只有一个引起它变化的原因。也就是说,一个类应该只有一个引起它变化的原因,如果一个类承担了太多的职责,那么当其中任何一个职责发生变化时,都可能影响到整个系统。
  3. 里氏替换原则:子类应该能够替换掉其父类。这意味着在设计模式中,我们应该尽可能地使用继承来实现代码的复用,同时也要确保子类能够完全替代掉父类,不会出现兼容性问题。
  4. 依赖倒置原则:高层模块不应该依赖底层模块,两者都应该依赖其抽象。这意味着在设计模式中,我们应该尽可能地将高层模块和底层模块解耦,让它们都依赖于一个抽象,这样可以提高代码的灵活性和可维护性。
  5. 接口隔离原则:客户端不应该依赖它不需要的接口。这意味着在设计模式中,我们应该尽可能地将接口拆分成更小的部分,每个部分只包含必要的方法,这样可以减少客户端对不必要接口的依赖,提高代码的可维护性。
  6. 迪米特法则:一个对象应当对其它对象尽可能少的了解。这意味着在设计模式中,我们应该尽可能地降低各个对象之间的耦合度,让每个对象只关心自己的事情,这样可以提高代码的可维护性和可扩展性。
  7. 组合/聚合复用原则:尽量使用组合/聚合,而不是继承。这意味着在设计模式中,我们应该尽可能地使用组合和聚合来实现代码的复用,而不是使用继承,因为继承可能带来一些潜在的问题,比如父类的修改可能会影响到所有的子类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数模学习day09-cftool使用

老版本的MATLAB可以在命令行使用cftool打开,2017a的版本可以直接找到。 x和y在你的工作区中需要已经存在,然后打开该工具箱就可以看见。 选择X和Y xy选择好之后就自动画好了拟合曲线。 Results分析 画好之后结果就呈现在这里了 这里的p1就是拟合系数&…

用React给XXL-JOB开发一个新皮肤(一):环境搭建和项目初始化

目录 一. 简述二. Fork 项目三. 搭建开发环境四. 初始化皮肤项目五. 添加相关依赖六. 预览 一. 简述 大名鼎鼎的 xxl-job 任务调度中心我们应该都使用过,项目地址:xxl-job。它是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单…

【代码随想录】刷题笔记Day48

前言 早上练车去了(好久没有8点前醒了),练科目二两小时下来脚根可真酸啊,希望下周一把过。练完顺带去Apple西湖免费换新了耳机,羊毛爽! 121. 买卖股票的最佳时机 - 力扣(LeetCode)…

JS逆向之无限debugger对抗

文章目录 JS中实现debugger的方法无限Debugger示例Demo1Demo2Demo3Demo4总结 无限Debugger实战 JS中实现debugger的方法 首先,我们要知道,在浏览器实现debugger的方法有哪些 debugger关键词 ,相当于C内联汇编的int3,在代码中嵌入…

网工内推 | 运维工程师,国企、上市公司,RHCE认证优先

01 广东机场白云信息科技股份有限公司 招聘岗位:基础架构运维工程师(中级) 职责描述: 1、参与公司业务系统的监控、巡检、维护、故障定位、原因分析; 2、负责业务系统的上线、升级割接工作; 3、负责服务器…

Unity 踩坑记录 AnyState 切换动画执行两次

AnySate 切换动画 Can Transition To Self 将这个勾选去掉!!!

C++ STL常用函数总结

一些总结&#xff0c;有错误欢迎指正&#xff01;&#xff01;&#xff01; 1 vector #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <vector>using namespace std;int main () {//vectorvector&l…

Python学习之路-Hello Python

Python学习之路-Hello Python Python解释器 简介 前面说到Python是解释型语言&#xff0c;Python解释器的作用就是用于"翻译"Python程序。Python规定了一个Python语法规则&#xff0c;根据该规则可编写Python解释器。 常见的Python解释器 CPython&#xff1a;官方…

文件或目录损坏的磁盘修复方法

文件或目录损坏是一种常见的计算机问题&#xff0c;可能由多种原因导致&#xff0c;如磁盘故障、病毒或恶意软件攻击、文件系统错误等。这些损坏可能导致数据丢失或无法访问文件&#xff0c;因此及时修复至关重要。本文将深入探讨文件或目录损坏的原因&#xff0c;并提供相应的…

试用统信服务器操作系统UOS 20

作者&#xff1a;田逸&#xff08;formyz&#xff09; 试用统信Linux操作系统UOS&#xff0c;想了解一下用已有的Linux经验能否轻松驾驭它。以便在某些场景下&#xff0c;可以多一种选择。本次试验在Proxmox VE 8&#xff08;以下简称PVE 8&#xff09;平台下进行&#xff0c;采…

唠一唠Java线程池

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊Java线程池&#xff0c;如果没有线程池&#xff0c;每个线程都需要手动创建和销毁线程&#xff0c;那将是多么低效和耗资源啊&#xff01; 线程池的核心作用就是复用已创建的线程&#xff0c;减少…

一个初级测试工程师的经历--我在阿里的两年

工作两年了&#xff0c;我一直希望让自己每年对测试的理解更深入一层。 谈轮了自己对各种测试的理解&#xff0c;这一年来&#xff0c;虽然对那些理概念的有所加强&#xff0c;自我感觉没有什么质的变化。前些天听我们公司的一位测试经理讲《敏捷测试》豁然开朗。他在学造飞机&…

BGP公认必遵属性——Next-hop(一)

BGP公认必遵属性共有三个&#xff0c;分别是&#xff1a;Next-hop、Origin、As-path&#xff0c;本期介绍Next-hop 点赞关注&#xff0c;持续更新&#xff01;&#xff01;&#xff01; Next-hop 华为BGP路由下一跳特点&#xff1a; 默认情况下传给EBGP邻居的BGP路由的下一跳…

【AnyText】文字处理AI,让平面设计如虎添翼 —— 登录和使用:详细指南!

AnyTex 关于Anytext登录魔搭社区魔搭社区链接魔搭社区登录登录完毕 登录AnyText使用Anytext生成带文字的图片手绘拖框随机 编辑图片中的文字 总结 关于Anytext 2024年1月5日&#xff0c;阿里达摩院宣布推出名为“AnyText”的算法&#xff0c;旨在解决AI绘图在处理文字创作时面临…

Python战机

基础版 import pygame import random# 设置游戏屏幕大小 screen_width 480 screen_height 600# 定义颜色 WHITE (255, 255, 255) RED (255, 0, 0) GREEN (0, 255, 0) BLUE (0, 0, 255)# 初始化pygame pygame.init()# 创建游戏窗口 screen pygame.display.set_mode((scre…

java解析json复杂数据的两种思路

文章目录 一、原始需求二、简单分析三、具体实现一1. api接口2. 接口返回3. json 数据解析1.&#xff09;引入Jackson库2.&#xff09;定义实体3.&#xff09;解析json字符串4.&#xff09;运行结果 4. 过程分析 四、具体实现二1. 核心代码2.运行结果 五、方案比较六、源码传送…

render 函数中使用组件等

render: (h) > {// 方案1&#xff1a;return h(el-switch, {props: {value: true},on: {change: (e) > {console.log(e, 改变)}}})// 方案二&#xff1a;const onChange (e) > {console.log(e, 改变)}return (<el-switch value{true} onChange{onChange}></…

c++学习:STL库(框架)+字符串模板类string+vector容器+list链表

目录 stl库 常用组件包括 字符串库 字符串模板类string 头文件 最常用的字符串模板类 字符串类型 模板原型 模板的成员数据类型 模板成员函数 有些函数会有重载&#xff0c;可以去下面网址查看std::basic_string - cppreference.comhttps://zh.cppreference.com/w/cp…

Mysql对日期的操作函数

当涉及到日期操作时&#xff0c;MySQL提供了许多内置的日期函数。以下是一些常用的MySQL日期函数以及带有返回值的示例&#xff1a; CURDATE()&#xff1a;返回当前日期。 示例&#xff1a;SELECT CURDATE(); -- 返回当前日期&#xff0c;例如&#xff1a;2024-01-09 NOW()&am…

1.8 day6 IO进程线程

使用有名管道实现两个进程之间的通信 进程A #include <myhead.h> int main(int argc, const char *argv[]) {//创建两个文件描述符用于打开两个管道int fd1-1;int fd2-1;//创建一个子进程int pid-1;if((fd1open("./mkfifo1",O_RDWR))-1){perror("open er…