简单了解设计模式

常见的设计模式大致可以分为三个主要类别:创建型、结构型和行为型。以下是这三个类别下的各种模式:

  1. 创建型模式 (Creational Patterns):这类模式主要关注如何创建对象。

    • 单例模式 (Singleton):确保某一个类只有一个实例,并提供一个访问它的全局访问点。
    • 原型模式 (Prototype):通过复制现有的实例来创建新的实例。
    • 建造者模式 (Builder):将一个复杂对象的构建与其表示分离,使得同样的构建可以创建不同的表示。
    • 工厂方法模式 (Factory Method):定义一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法使得类的实例化延迟到子类。
    • 抽象工厂模式 (Abstract Factory):提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
  2. 结构型模式 (Structural Patterns):这类模式主要关注类和对象的组合。

    • 适配器模式 (Adapter):将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
    • 桥接模式 (Bridge):将抽象部分与其实现部分分离,使它们都可以独立地变化。
    • 组合模式 (Composite):将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。
    • 装饰模式 (Decorator):动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更为灵活。
    • 外观模式 (Facade):为子系统中的一组接口提供一个统一的接口。外观模式定义了一个高层接口,这个接口使得子系统更容易使用。
    • 享元模式 (Flyweight):运用共享技术有效地支持大量细粒度的对象。
    • 代理模式 (Proxy):为其他对象提供一个代理以控制对这个对象的访问。
  3. 行为型模式 (Behavioral Patterns):这类模式主要关注对象的职责。

    • 解释器模式 (Interpreter):为语言创建解释器,用于解释语言中的表达式。
    • 模板方法模式 (Template Method):在方法中定义一个算法的骨架,但将一些步骤延迟到子类中。模板方法使得子类可以不改变算法的结构即可重定义算法的某些特定步骤。
    • 命令模式 (Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
    • 迭代器模式 (Iterator):提供一种方法访问一个聚合对象,无需暴露该对象的内部表示。
    • 观察者模式 (Observer):当一个对象的状态发生变化时,其所有依赖者都会自动得到通知。
    • 中介者模式 (Mediator):使用一个中介对象来

封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其松散耦合,而且可以独立地改变它们之间的交互。

  • 备忘录模式 (Memento):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
  • 状态模式 (State):允许一个对象在其内部状态改变时改变它的行为。
  • 策略模式 (Strategy):定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。
  • 访问者模式 (Visitor):为一个对象结构中的元素提供一个表示操作的接口。这个操作可以在对象结构的元素上定义,这样操作可以不改变对象结构的类的前提下在新的操作。

这些模式为常见的软件设计问题提供了经过验证的解决方案,使得软件设计更为模块化、灵活和可维护。

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

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

相关文章

在内网开发中使用Nginx代理来访问钉钉新版服务端API

如果你在内网开发中使用Nginx代理来访问钉钉新版服务端API,你可以在Nginx配置文件中进行相应的配置。 以下是一个简单的示例Nginx配置,用于将对指定URL的请求代理到钉钉服务端API: server { listen 80; server_name your_server_domain; l…

Python爬虫-新能源汽车销量榜

前言 本文是该专栏的第11篇,后面会持续分享python爬虫案例干货,记得关注。 本文以懂车平台的新能源汽车销量榜单为例,获取各车型的销量排行榜单数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。 废话不多说,跟着笔者直接往下看正文详细内容。(附带…

FFMPEG编译安装、简单使用

目录 源码下载编译和安装API简单使用源代码编译运行 工具的简单使用学习论坛 源码下载 地址: https://github.com/FFmpeg/FFmpeg git clone https://github.com/FFmpeg/FFmpeg.git编译和安装 因为使用在板端编译,因此没有使用交叉编译链的部分。将如下内容复制到…

电梯安全远程监控系统的主要作用和意义

电梯是现代城市生活中必不可少的交通工具,为了保证其安全可靠的运行,电梯运行监测系统应运而生。本文将介绍电梯安全远程监控的工作原理、重要性 一、电梯安全远程监控系统的作用   ◆实时监控和故障预警:电梯安全远程监控系统可以实时监测…

加强网站稳定性!学习如何进行高效压力测试!

前言 1、什么是压力测试? 软件压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。 软件压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试…

Pandas进阶:文本处理

引言 文本的主要两个类型是string和object。如果不特殊指定类型为string,文本类型一般为object。 文本的操作主要是通过访问器str 来实现的,功能十分强大,但使用前需要注意以下几点。 访问器只能对Series数据结构使用。 除了常规列变量df.c…

从0开始学习JavaScript--JavaScript 集成测试

JavaScript集成测试是确保整个应用程序组件协同工作的关键环节。通过模拟真实环境,集成测试能够发现不同组件之间的潜在问题,确保系统的稳定性和可靠性。本文将深入探讨JavaScript集成测试的核心概念、工具使用以及最佳实践,并通过丰富的示例…

springboot多文件上传

Spring Boot 是一个强大的、灵活的、开发效率高的框架&#xff0c;适合开发各种类型的 Web 应用或微服务&#xff0c;是现代化的企业级开发的首选。 接口编写 可以使用Spring Boot的MultipartResolver来实现上传多文件。 在pom.xml文件中添加以下依赖&#xff1a; <depende…

1.2 Ubauntu 使用

一、完成VMware Tools安装 双击 VMwareTool 打开 Ubuntu 终端快捷键 AltControlT 切换汉语的快捷键是Alt空格 ls 打印出当前所在目录中所有文件和文件夹 cd 桌面 进入桌面文件夹 sudo ./vmware-install.pl 安装tool&#xff0c;输入之前设置的密码。 地址默认&#xff0c;按…

华为OD机试真题-CPU算力分配-2023年OD统一考试(C卷)

题目描述: 现有两组服务器A和B,每组有多个算力不同的CPU,其中A[i]是A组第i个CPU的运算能力,B[i]是B组第i个CPU的运算能力。一组服务器的总算力是各CPU的算力之和。为了让两组服务器的算力相等,允许从每组各选出一个CPU进行一次交换,求两组服务器中,用于交换的CPU的算力,…

UI自动化测试工具有哪些优势?

UI自动化测试工具通过提高测试效率、覆盖率&#xff0c;减少测试时间和成本&#xff0c;以及支持持续集成等方式&#xff0c;为软件开发团队提供了一系列重要的优势&#xff0c;有助于提升软件质量和开发效率。 自动化执行&#xff1a;UI自动化测试工具可以模拟用户与应用程序的…

HarmonyOS脚手架:UI组件之文本和图片

前言 关于HarmonyOS脚手架&#xff0c;本篇是系列的第二篇&#xff0c;主要实现UI组件文本和图片的常见效果查看&#xff0c;本身功能特别的简单&#xff0c;其目的也是很明确&#xff0c;方便大家根据效果查看相关代码实现&#xff0c;可以很方便的进行复制使用&#xff0c;当…

TCP三次握手过程

什么是TCP tcp是一个面向连接的、可靠的、基于字节流的传输层通信协议 面向连接&#xff1a;TCP连接是一对一的&#xff0c;不能实现一对多或多对一&#xff0c;TCP在通信前要首先建立连接&#xff0c;连接成功后才能开始进行通信可靠的&#xff1a;TCP连接要保证通信过程的可靠…

iOS 版 ONLYOFFICE 文档 v7.4已更新!

iOS 版 ONLYOFFICE 文档 v7.4已更新 全新版本的免费 ONLYOFFICE 文档管理与编辑应用现已在 iOS 设备上推出。继续阅读以了解有关本次更新的信息&#xff0c;也可以在本文中找到应用的下载链接。 关于 ONLYOFFICE 文档 ONLYOFFICE 文档是一款适合手机与平板电脑的移动端应用套件…

springboot中@Builder注解的详细用法实例,跟数据库结合。

在Spring Boot中&#xff0c;Builder注解是Lombok库提供的一个注解&#xff0c;用于生成带有Builder模式支持的构造器方法。通过Builder注解&#xff0c;可以简化对象的创建过程&#xff0c;特别适用于需要设置多个属性的情况。 下面是一个使用Builder注解的示例&#xff1a; …

基于python的FMCW雷达工作原理仿真

这篇文章将介绍如何使用python来实现FMCW工作原理的仿真&#xff0c;第1章内容将介绍距离检测原理&#xff0c;第2章内容会介绍速度检测原理。 第1章 第1部分: 距离检测原理 调制的连续波雷达通常也被叫做调频连续波&#xff08;FMCW&#xff09;雷达是一个使用频率调制来测量…

腾讯云避坑——无法远程root登录

因为各种原因&#xff0c;最近需要使用腾讯云来代替阿里云。 但在ubuntu18/20的服务器中&#xff0c;我使用另一个电脑试图用scp命令来拷贝服务器中的一些文件&#xff0c;命令为: scp root服务器ip:文件目录 本地目录但一直显示密码错误。 原因是腾讯云ubuntu系统在创建时并不…

BLIoTLink工业协议转换软件功能和使用教程

1.功能简介 BLIoTLink 是一款各种 PLC 协议、Modbus RTU 、Modbus TCP、DL/T645 等多 种协议转换为 Modbus TCP、OPC UA、MQTT、BACnet IP、华为云 IoT、亚 马逊云 IoT、阿里云 IoT、ThingsBoard、钡铼云 IoT 等协议的软件。 BLIoTLink 下行支持&#xff1a;各种 PLC 协议、Mod…

centos上安装并持久化配置LVS

1 实验背景 1&#xff09;系统版本&#xff1a;centos7.8 2&#xff09;虚拟机&#xff1a;3个centos虚拟机&#xff0c;&#xff08;其中一个做Director Server,另外两个做Real Server) 3) LVS大致有NAT ,DR ,Tun这三种模式&#xff0c;这里搭建一个典型的DR模式的LVS Direc…

【漏洞复现】大华智慧园区综合管理平台deleteFtp接口远程命令执行

漏洞描述 大华智慧园区综合管理平台deleteFtp接口存在远程命令执行,攻击者可利用该漏洞执行任意命令,获取服务器控制权限。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益…