当前位置: 首页 > news >正文

༺༽༾ཊ—设计-简介-模式—ཏ༿༼༻

        我对设计模式的理解就是一种可复用的面向对象的设计工具,它与代码无关,我们可以利用设计模式设计出高内聚、低耦合的应用程序,并且最大程度实现程序的复用,以应对复杂的需求变化。

        程序的可复用性就是用已存在的程序模块进行更新;

        高内聚就是我有一组相互关联,紧密依赖的一些方法,我们需要将这些方法封装在一个类中

        低耦合就是减少两个类或者多个类之间的相互依赖;

        为了设计出高内聚、低耦合的应用程序,总结了七个原则

        1.单一职责原则;

        2.依赖倒置原则;

        3.开闭原则;

        4.接口隔离原则;

        5.里氏替换原则;

        6.合成复用原则;

        7.迪米特原则;

        设计模式大致分为三种类型:

        1.创建型设计模式

                用于对象的创建,有五种类型:

                ①单例(Singleton)模式;

                ②工厂方法(FactoryMethod)模式;

                ③抽象工厂(AbstractFactory)模式;

                ④建造者(Builder)模式;

                ⑤原型(Prototype)模式;

        2.结构型设计模式

                用于对象和对象的组合/类与类的组合,组合后的对象或者类更利于扩展,有七种类型:

                ①组合(Composite)模式;

                ②适配器(Adapter)模式;

                ③包装器(Wrapper)/  装饰器(Decorator)模式;

                ④桥接(Bridge)模式;

                ⑤外观(Facade)模式;

                ⑥享元(Flyweight)模式;

                ⑦代理(Proxy)模式;

        3.行为型设计模式

                用于解决对类和对象之间的交互与方法分配问题,有十一种类型:

                ①状态(State)模式;

                ②策略(Strategy)模式;

                ③命令(Command)模式;

                ④访问者(Visitor)模式;

                ⑤解释器(Interpreter)模式;

                ⑥观察者(Observer)模式; 

                ⑦责任链(ChainOfResponsibility)模式;

                ⑧迭代器(Iterator)模式;   

                ⑨中介者(Mediator)模式;

                ⑩备忘录(Memento)模式;

                ⑩+①:模板方法(TemplateMethod)模式;

        总结:学好设计模式需要明白两点,第一七个原则,第二23种设计模式

相关文章:

༺༽༾ཊ—设计-简介-模式—ཏ༿༼༻

我对设计模式的理解就是一种可复用的且面向对象的设计工具,它与代码无关,我们可以利用设计模式设计出高内聚、低耦合的应用程序,并且最大程度实现程序的复用,以应对复杂的需求变化。 程序的可复用性就是用已存在的程序模块进行更新…...

Matplotlib快速入门,Python通用的绘图工具库上手

Matplotlib是一个用于Python编程语言的综合性绘图库。 它可以生成各种类型的图表,包括折线图、条形图、散点图、直方图、饼图等。Matplotlib支持多种数据格式,包括NumPy数组、Pandas DataFrame和CSV文件。它还可以从URL读取数据。 Matplotlib可以在交互…...

Linux 基本语句_16_Udp网络聊天室

代码&#xff1a; 服务端代码&#xff1a; #include <stdio.h> #include <arpa/inet.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdlib.h> #include <unistd.h> #include <string…...

使用ffmpeg命令进行视频格式转换

1 ffmpeg介绍 FFmpeg 是一个非常强大和灵活的开源工具集&#xff0c;用于处理音频和视频文件。它提供了一系列的工具和库&#xff0c;可以用于录制、转换、流式传输和播放音频和视频。 FFmpeg 主要特点如下&#xff1a; 格式支持广泛&#xff1a;FFmpeg 支持几乎所有的音频和视…...

Mac安装Adobe AE/pr/LR/ai/ps/au/dw/id 2024/2023报错问题解决(常见错误:已损坏/2700/146/130/127)

1.打开允许“允许任何来源” 如何打开允许任何来源&#xff1f;在 Finder 菜单栏选择 【前往】 – 【实用工具 】&#xff0c;找到【终端】程序&#xff0c;双击打开&#xff0c;在终端窗口中输入&#xff1a;sudo spctl --master-disable 输入代码后&#xff0c;按【return …...

Python三级 每周练习题31

如果你感觉有收获&#xff0c;欢迎给我微信扫打赏码 ———— 以激励我输出更多优质内容 练习一: 作业1:编写程序&#xff0c;在下面的字典中找出身高137的同学并输出姓名&#xff0c;如果没找到&#xff0c; 输出没有 a{‘小赵’:136,‘小钱’:141,‘小孙’:146,‘小李’:13…...

【DataSophon】大数据服务组件之Flink升级

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&am…...

Android笔记(十八):面向Compose组件结合Retrofit2和Rxjava3实现网络访问

一、Retrofit2 Square公司推出的Retrofit2库&#xff08;https://square.github.io/retrofit/&#xff09;&#xff0c;改变了网络访问的方式。它实现了网络请求的封装。Retrofit库采用回调处理方式&#xff0c;使得通过接口提交请求和相应的参数的配置&#xff0c;就可以获得…...

mybatis中oracle的sql没走索引导致特别慢(未加jdbcType的)

如果直接跑sql是能走索引很快&#xff0c;在mybatis中不能&#xff0c;可能就是jdbcType的原因。 比如&#xff0c;我有一个属性A&#xff0c;在表里面是VARCHAR2类型&#xff0c;但是在mybatis中的sql是#{a}&#xff0c;缺少jdbcTypeJdbcType.VARCHAR&#xff0c;就会导致myba…...

QT自带打包问题:无法定位程序输入点?metaobject@qsound

文章目录 无法定位程序输入点?metaobjectqsound……检查系统环境变量的配置&#xff1a;打包无须安装qt的文件 无法定位程序输入点?metaobjectqsound…… 在执行release打包程序后&#xff0c;相应的release文件夹下的exe文件&#xff0c;无法打开 如有错误欢迎指出 检查系…...

7.3 lambda函数

一、语法 1.基础语法 [capture](paramLists) mutable ->retunType{statement} capture。捕获列表&#xff0c;用于捕获前文的变量供lambda函数中使用&#xff0c;可省略。(paramLists)。参数列表&#xff0c;可省略。mutable。lambda表达式默认具有常量性&#xff0c;可以…...

dcoker-compose一键部署EFAK —— 筑梦之路

简介 EFAK&#xff08;Eagle For Apache Kafka&#xff0c;以前称为 Kafka Eagle&#xff09;是一款由国内公司开源的Kafka集群监控系统&#xff0c;可以用来监视kafka集群的broker状态、Topic信息、IO、内存、consumer线程、偏移量等信息&#xff0c;并进行可视化图表展示。独…...

音视频:Ubuntu下安装 FFmpeg 5.0.X

1.安装相关依赖 首可选一&#xff1a; sudo apt-get update sudo apt-get install build-essential autoconf automake libtool pkg-config \libavcodec-dev libavformat-dev libavutil-dev \libswscale-dev libresample-dev libavdevice-dev \libopus-dev libvpx-dev libx2…...

【LSM tree 】Log-structured merge-tree 一种分层、有序、面向磁盘的数据结构

文章目录 前言基本原理读写流程写流程读流程 写放大、读放大和空间放大优化 前言 LSM Tree 全称是Log-structured merge-tree, 是一种分层&#xff0c;有序&#xff0c;面向磁盘的数据结构。其核心原理是磁盘批量顺序写比随机写性能高很多&#xff0c;可以通过围绕这一原理进行…...

配置OSPF与BFD联动示例

定义 双向转发检测BFD&#xff08;Bidirectional Forwarding Detection&#xff09;是一种用于检测转发引擎之间通信故障的检测机制。 BFD对两个系统间的、同一路径上的同一种数据协议的连通性进行检测&#xff0c;这条路径可以是物理链路或逻辑链路&#xff0c;包括隧道。 …...

01到底应该怎么理解“平均负载”

1、如何了解系统的负载情况&#xff1f; 每次发现系统变慢时&#xff0c; 我们通常做的第⼀件事&#xff0c; 就是执⾏top或者uptime命令&#xff0c; 来了解系统的负载情况。 ⽐如像下⾯这样&#xff0c; 我在命令⾏⾥输⼊了uptime命令&#xff0c; 系统也随即给出了结果。 …...

jmeter,动态参数之随机数、随机日期

通过函数助手&#xff0c;执行以下配置&#xff1a; 执行后的结果树&#xff1a; 数据库中也成功添加了数据&#xff0c;对应字段是随机值&#xff1a;...

uniApp常见知识点-问题答案

1、uniApp中如何进行页面跳转&#xff1f; 答案&#xff1a;可以使用 uni.navigateTo、uni.redirectTo 和 uni.reLaunch 等方法进行页面跳转。其中&#xff0c;uni.navigateTo可以实现页面的普通跳转&#xff0c; uni.redirectTo可以实现页面的重定向跳转&#xff0c; uni.reL…...

云原生基础入门概念

文章目录 发现宝藏云原生的概念云原生的关键技术为何选择云原生&#xff1f;云原生的实际应用好书推荐 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【宝藏入口】。 云原生的概念 当谈及现…...

一个 tomcat 下如何部署多个项目?附详细步骤

一个tomcat下如何部署多个项目&#xff1f;Linux跟windows系统下的步骤都差不多&#xff0c;以下linux系统下部署为例。windows系统下部署同理。 1 不修改端口&#xff0c;部署多个项目 清楚tomcat目录结构的应该都知道&#xff0c;项目包是放在webapps目录下的&#xff0c;那…...

pycharm强制让terminal停止执行的快捷键

CtrlC即可...

MFC(Microsoft Foundation Classes)中 MessageBox

在MFC&#xff08;Microsoft Foundation Classes&#xff09;中&#xff0c;MessageBox是一个常用的对话框类&#xff0c;用于显示消息框并与用户进行交互。MessageBox类提供了多种用法和选项&#xff0c;以下是一些常见的用法和示例说明&#xff1a; 显示简单的消息框&#x…...

如何让.NET应用使用更大的内存

我一直在思考为何Redis这种应用就能独占那么大的内存空间而我开发的应用为何只有4GB大小左右&#xff0c;在此基础上也问了一些大佬&#xff0c;最终还是验证下自己的猜测。 操作系统限制 主要为32位操作系统和64位操作系统。 每个进程自身还分为了用户进程空间和内核进程空…...

【从零开始学习JVM | 第九篇】了解 常见垃圾回收器

前言&#xff1a; 垃圾回收器&#xff08;Garbage Collector&#xff09;是现代编程语言中的一项重要技术&#xff0c;它提供了自动内存管理的机制&#xff0c;极大地简化了开发人员对内存分配和释放的繁琐工作。通过垃圾回收器&#xff0c;我们能够更高效地利用计算机的内存资…...

Wordle 游戏实现 - 使用 C++ Qt

标题&#xff1a;Wordle 游戏实现 - 使用 C Qt 摘要&#xff1a; Wordle 是一款文字猜词游戏&#xff0c;玩家需要根据给定的单词猜出正确的答案&#xff0c;并在限定的次数内完成。本文介绍了使用 C 和 Qt 框架实现 Wordle 游戏的基本思路和部分代码示例。 引言&#xff1a;…...

Python 爬虫开发完整环境部署,爬虫核心框架安装

Python 爬虫开发完整环境部署 前言&#xff1a; ​ 关于本篇笔记&#xff0c;参考书籍为 《Python 爬虫开发实战3 》 笔记做出来的一方原因是为了自己对 Python 爬虫加深认知&#xff0c;一方面也想为大家解决在爬虫技术区的一些问题&#xff0c;本篇文章所使用的环境为&#x…...

汽车标定技术(十三)--标定概念再详解

目录 1.概述 2.基于Flash的标定 3.基于RAM的标定 4.AUTOSAR基于指针标定概念 5.小结 1.概述 最近有朋友问到是否用overlay标定完数据就直接写在Flash中&#xff0c;其实不然&#xff0c;是需要关闭overlay然后通过XCP Program指令集或者UDS刷进Flash。 从这里看出&#…...

PostgreSQL常用命令

数据库版本 :9.6.6 注意 :PostgreSQL中的不同类型的权限有 SELECT,INSERT,UPDATE,DELETE,TRUNCATE,REFERENCES,TRIGGER,CREATE,CONNECT,TEMPORARY,EXECUTE 和 USAGE。 1. 登录PG数据库 以管理员身份 postgres 登陆,然后通过 #psql -U postgres #sudo -i -u postgres …...

使用python脚本部署k8s集群

1.环境规划&#xff1a; 节点IP地址操作系统配置脚本运行节点192.168.174.5centos7.92G2核server192.168.174.150centos7.92G2核client1192.168.174.151centos7.92G2核client2192.168.174.152centos7.92G2 2.运行准备&#xff1a; yum install -y python python-pip pip in…...

【C语言】操作符详解(四):结构成员访问操作符

目录 结构成员访问操作符 结构体 结构体的声明 结构体变量的定义和初始化 结构成员访问操作符 结构体成员的直接访问 结构体成员的间接访问 结构成员访问操作符 结构体 ⭐C语言已经提供了内置类型&#xff0c;如: char、short、int、long、float、double等&#xff0c;但…...

做设计太依赖网站素材/网络媒体发稿

概述在实际的业务场景应用中&#xff0c;我们经常要根据业务条件获取并筛选出我们的目标数据。这个过程我们称之为数据查询的过滤。而过滤过程使用的各种条件(比如日期时间、用户、状态)是我们获取精准数据的必要步骤&#xff0c;这样才能得到我们期望的结果。所以本章我们来学…...

在国外可以用高德地图吗/广东优化疫情防控措施

Qt5.5 QFileDialog类的使用方法 2017-01-13 15:15 632人阅读 评论(0) 收藏 举报分类&#xff1a;QT学习&#xff08;7&#xff09; 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 目录(?)[] 头文件&#xff1a;#include <QFileDialog> Pro…...

哪些网站可以做画赚钱/百度竞价推广方法

目录 前言 一、创建快捷方式 二、选择你的自定义图标 1. 下载png图 2. 获取ico图标文件 三、更改快捷方式图标 前言 今天在Windows10下安装了Spyder编辑器&#xff0c;好用归好用&#xff0c;但是在创建快捷方式后面对那类似于IDLE的图标实在是左右看着都难受&#xff0…...

群晖wordpress外网访问/外链代发2分一条

1&#xff0c;JDK下载jdk将jdk解压后放在/usr/local路径下/usr/local/jdk1.7.0_67做个软连接ln -s /usr/local/jdk1.7.0_67/ /usr/local/jdk修改/etc/profile文件添加以下内容######################################export JAVA_HOME/usr/local/jdk1.7.0_67export PATH$JAVA…...

wordpress修改html代码/域名查询系统

在windows服务器中布置了一个项目&#xff0c;测试阶段发现thinkphp5.0框架下运行出现了验证码无法显示、json数据格式前面有一个红点。 直接在返回结果之前&#xff0c;执行一下ob_clean(); 完美解决问题。...

中国建设银行网站主要功能/宁波seo外包代运营

1 简介 u-boot跨平台是为了最大化的共用代码&#xff0c;提高开发效率&#xff0c;节约开发时间。 2 目录结构 |--u-boot (根目录) |-- arch (平台目录) | |--arm (arm架构) | …...