小谈设计模式(30)—Java设计模式总结

news2024/11/29 22:37:18

小谈设计模式(30)—Java设计模式总结

  • 专栏介绍
    • 专栏地址
    • 专栏介绍
  • 总括
    • 三个主要类别
      • a
      • b
      • c
    • 创建型模式(Creational Patterns)
      • 常见的创建型模式
        • 单例模式(Singleton Pattern)
        • 工厂模式(Factory Pattern)
        • 抽象工厂模式(Abstract Factory Pattern)
        • 建造者模式(Builder Pattern)
        • 原型模式(Prototype Pattern)
    • 结构型模式(Structural Patterns)
      • 常见的结构型模式
        • 适配器模式(Adapter Pattern)
        • 桥接模式(Bridge Pattern)
        • 组合模式(Composite Pattern)
        • 装饰者模式(Decorator Pattern)
        • 外观模式(Facade Pattern)
        • 享元模式(Flyweight Pattern)
    • 行为型模式(Behavioral Patterns)
      • 常见的行为型模式
        • 观察者模式(Observer Pattern)
        • 策略模式(Strategy Pattern)
        • 模板方法模式(Template Method Pattern)
        • 迭代器模式(Iterator Pattern)
        • 命令模式(Command Pattern)
        • 职责链模式(Chain of Responsibility Pattern)
    • 总结

专栏介绍

专栏地址

http://t.csdnimg.cn/VpriY

专栏介绍

主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位
在这里插入图片描述

总括

Java设计模式是一套被广泛应用于软件开发中的经典设计思想和解决方案。它们通过提供一种可重用的设计模式,帮助开发人员解决常见的设计问题,并提高代码的可读性、可复用性和可维护性。

在这里插入图片描述

三个主要类别

a

创建型模式(Creational Patterns)

b

结构型模式(Structural Patterns)

c

行为型模式(Behavioral Patterns)。

在这里插入图片描述

创建型模式(Creational Patterns)

关注对象的创建机制,包括如何实例化对象和组织对象的创建方式

常见的创建型模式

单例模式(Singleton Pattern)

确保一个类只有一个实例,并提供全局访问点。

工厂模式(Factory Pattern)

通过工厂类来创建对象,隐藏对象的创建逻辑。

抽象工厂模式(Abstract Factory Pattern)

提供一个接口,用于创建相关或依赖对象的家族,而不需要指定具体类。

建造者模式(Builder Pattern)

将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。

原型模式(Prototype Pattern)

通过复制现有对象来创建新对象,避免了使用构造函数创建对象的开销。
在这里插入图片描述

结构型模式(Structural Patterns)

关注对象之间的组合和关联关系,以及如何将对象组合成更大的结构

常见的结构型模式

适配器模式(Adapter Pattern)

将一个类的接口转换成客户端所期望的另一个接口。

桥接模式(Bridge Pattern)

将抽象部分与实现部分分离,使它们可以独立变化。

组合模式(Composite Pattern)

将对象组合成树形结构以表示部分-整体的层次结构。

装饰者模式(Decorator Pattern)

动态地将责任添加到对象上。

外观模式(Facade Pattern)

为子系统中的一组接口提供一个统一的接口。

享元模式(Flyweight Pattern)

通过共享对象来减少内存使用。
在这里插入图片描述

行为型模式(Behavioral Patterns)

关注对象之间的通信和协作方式,以及对象之间的责任分配

常见的行为型模式

观察者模式(Observer Pattern)

定义了对象之间的一对多依赖关系,当一个对象的状态发生变化时,其依赖者会收到通知并自动更新。

策略模式(Strategy Pattern)

定义了一系列算法,并将其封装成独立的类,使得它们可以互相替换。

模板方法模式(Template Method Pattern)

定义了一个算法的骨架,将一些步骤延迟到子类中实现。

迭代器模式(Iterator Pattern)

提供一种顺序访问聚合对象中各个元素的方法,而不需要暴露其内部表示。

命令模式(Command Pattern)

将请求封装成对象,以便可以用不同的请求来参数化其他对象。

职责链模式(Chain of Responsibility Pattern)

将请求的发送者和接收者解耦,使得多个对象都有机会处理请求。
在这里插入图片描述

总结

通过熟练掌握和应用这些设计模式,开发人员可以更加高效地解决常见的设计问题,并提供可靠和可扩展的软件解决方案。

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

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

相关文章

【计算机网络笔记】分组交换中的报文交付时间计算例题

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 系列文章目录题目解答 题目 在下图所示的采用“存储-转发”方式的分组交换网络中所有链路的数据传输速率为100 Mbps,分…

[开源]基于Vue+ElementUI+G2Plot+Echarts的仪表盘设计器

一、开源项目简介 基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的仪表盘设计器,具备仪表盘目录管理、仪表盘设计、仪表盘预览能力,支持MySQL、Oracle、PostgreSQL、MSSQL、JSON等数据集接入,对于复杂数据处理还可以使用…

【具身智能模型1】PaLM-E: An Embodied Multimodal Language Model

论文标题:PaLM-E: An Embodied Multimodal Language Model 论文作者:Danny Driess, Fei Xia, Mehdi S. M. Sajjadi, Corey Lynch, Aakanksha Chowdhery, Brian Ichter, Ayzaan Wahid, Jonathan Tompson, Quan Vuong, Tianhe Yu, Wenlong Huang, Yevgen C…

Trello的替代方案有哪些?6种国内外选择!

Trello是一个功能强大的项目管理工具,可以帮助团队组织和跟踪他们的工作。然而它并不是唯一的工具。Trello有很多替代方案,它们提供了独特的功能和不同的方法来管理任务和项目。以下是Trello的一些优秀替代方案:Zoho Projects、Basecamp、Wri…

NET 8发布首个RC,比.NET 7的超级快更快!

NET 8 发布了首个 RC。据称 RC 阶段会发布两个版本,正式版将于 2023 年 11 月 14 日至 16 日在 .NET Conf 2023 上推出。.NET 8 是长期支持 (LTS) 版本,将会获得 3 年技术支持。 公告写道,此版本为 Android 和 WASM 引入了全新的 AOT 模式、…

Leetcode—27.移除元素【简单】

2023每日刷题&#xff08;一&#xff09; Leetcode—27.移除元素 无脑直接法实现代码 int removeElement(int* nums, int numsSize, int val){int i 0;int length 0;int j 0;while(i < numsSize) {// 存在等于val的数组元素if(nums[i] val) {j i;int flag 0;while(j…

如何降低海康、大华等网络摄像头调用的高延迟问题(二)

目录 1.RTSP介绍 2.解决办法1 3.解决办法2 1.RTSP介绍 RTSP&#xff08;Real-time Streaming Protocol&#xff09;是一种用于实时流媒体传输的网络协议。它被设计用于在服务器和客户端之间传输音频、视频以及其他流媒体数据。 RTSP协议允许客户端通过与服务器建立RTSP会话…

系统架构师备考倒计时21天(每日知识点)

测试阶段划分 单元测试&#xff1a;依据详细设计&#xff0c;模块测试&#xff0c;模块功能、性能、接口等集成测试&#xff1a;依据概要设计&#xff0c;模块间的接口系统测试&#xff1a;依据需求文档&#xff0c;在真实环境下&#xff0c;验证完整的软件配置项能否和系统正…

【linux】日志和journalctl 管理查看日志

目录 既看即用 简略介绍 linux的日志类型 系统日志 介绍 区别的简单说明 区别的详细说明 journalctl是什么&#xff1f;&#xff08;查看系统日志的工具&#xff09; 详细内容 linux的日志类型 systemd日志&#xff08;systemd-journald&#xff09; 放在哪个目录 …

推荐几款好用的通用型项目管理软件!

目前市面上的项目管理产品非常丰富&#xff0c;在选择项目管理软件的过程中一一了解这些产品哪个更好更适合自己的团队&#xff0c;无疑会浪费很多时间成本。通用性项目管理工具可以满足大部分团队的项目管理需求&#xff0c;那有什么好用的通用型项目管理软件呢&#xff1f;知…

电商数据API接口:新服务下电商网站、跨境电商独立站,移动APP的新型拉新武器

互联网的发展改变了我们的生活方式&#xff0c;也改变了企业商家们的营销方式&#xff0c;越来越多的企业商家把产品营销从线下转到线上&#xff0c;选择在线商城、移动APP、微信公众号等互联网工具进行营销活动。而随着营销模式的多元化和电子支付渠道的进一步发展&#xff0c…

Linux 系统安装 Redis7 —— 超详细操作演示!

内存数据库 Redis7 一、Redis 概述1.1 Redis 简介1.2 Redis 的用途1.3 Redis 特性1.4 Redis 的IO模型 二、Redis 的安装与配置2.1 Redis 的安装2.2 连接前的配置2.3 Redis 客户端分类2.4 Redis 配置文件详解 三、Redis 命令四、Redis 持久化五、Redis 主从集群六、Redis 分布式…

【排序算法】详解直接插入排序和希尔排序原理及其性能分析

文章目录 插入排序算法原理细节分析代码实现复杂度分析:稳定性分析:与冒泡排序的对比 希尔排序算法原理细节分析代码实现复杂度分析稳定性分析 总结对比 插入排序 算法原理 插入排序又或者说直接插入排序,是一种和冒泡排序类似的并且比较简单的排序方法&#xff0c; 基本思想…

【Kotlin精简】第4章 函数

1 简介 函数是用来运行代码的载体&#xff0c;可以在一个函数里编写很多行代码&#xff0c;当运行这个函数时&#xff0c;函数中的所有代码会全部运行。 Kotlin中的函数同Java完全面向对象的规则不太一样&#xff0c;在Kotlin的世界里&#xff0c;函数也是准C位的&#xff0c;…

ios设备管理软件iMazing 2.17.11官方中文版新增功能介绍

iMazing 2.17.11官方中文版(ios设备管理软件)是一款管理苹果设备的软件&#xff0c; Windows 平台上的一款帮助用户管理 IOS 手机的应用程序&#xff0c;软件功能非常强大&#xff0c;界面简洁明晰、操作方便快捷&#xff0c;设计得非常人性化。iMazing官方版与苹果设备连接后&…

【数据结构C/C++】十大排序算法的实现思路以及易写易记忆版代码实现

文章目录 冒泡排序选择排序插入排序归并排序快速排序&#xff08;重点讲解&#xff09;堆排序&#xff08;重点理解&#xff09;408考研各数据结构C/C代码&#xff08;Continually updating&#xff09; 冒泡排序 时间复杂度 O&#xff08;n2&#xff09; 空间复杂度 O&#x…

Jupyter Notebook的使用

以管理员身份运行 命令行显示内容含义 JupyterLab application directory is D:\Program Files\anaconda\share\jupyter\lab↑这一行是JupyterLab的地址 Serving notebooks from local directory: C:\Users\Sylvia\Documents↑这一行是文件的保存地址。其中Users中文文件夹名是…

【C++STL基础入门】stack栈的增删查等操作的使用

文章目录 前言一、stack元素访问1.1 元素访问之top 二、stack修改2.1 stack修改之push()函数2.2 stack修改之pop()函数2.3 stack修改之swap()交换函数2.4 stack修改之emplace()在顶部原位构造元素 总结 前言 在C的标准模板库(STL)中&#xff0c;stack&#xff08;栈&#xff0…

zabbix监控keepalived主备状态以及脑裂

zabbix监控keepalived主备状态以及脑裂 文章目录 zabbix监控keepalived主备状态以及脑裂环境说明&#xff1a;1.配置keepalived监控主备状态的脚本在master主机上编写脚本在slave主机上编写脚本 2.配置keepalived加入监控脚本的配置2.1.配置主keepalived配置文件2.2.配置备keep…

Godot C#连接信号不能像GDScirpt一样自动添加代码

前言 我网上找了好久&#xff0c;发现Godot 对于C# 的支持还有待增强 使用c#脚本有办法像gds那样连接节点自带信号时自动生成信号吗&#xff1f; 百度贴吧 Godot C# How To, Episode 9. Signals With Parameters | Godot Mono 解决方案 把信号拉长&#xff0c;看他的属性 修…