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

小谈设计模式(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.mzph.cn/news/109198.shtml

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

相关文章

嵌入式养成计划-41----C++ auto--lambda表达式--C++中的数据类型转换--C++标准模板库(STL)--list--C++文件操作

九十九、auto 99.1 概念 C11引入了自动类型推导,和Python不一样,C中的自动类型推导,需要auto关键字来引导比如 :auto a 1.2; 会被编译器自动识别为 a 为 double 类型 99.2 作用 auto修饰变量,可以自动推导变量的数…

嵌入式平台的电源总结

本文引注: https://mp.weixin.qq.com/s/PuSxHDFbJjjHEReukLSvyg 1.AC的定义 Alternating Current(交流)的首字母缩写。AC是大小和极性(方向)随时间呈周期性变化的电流。电流极性在1秒内的变化次数被称为频率,以Hz为单位…

Elasticsearch小bug记录:term: XXX was completely eliminated by analyzer

问题: 下面这个报错,是在配置同义词的时候报的错:不能识别南京。 {"error": {"root_cause": [{"type": "illegal_argument_exception","reason": "failed to build synonyms"…

Conflence 空间管理

1.创建空间 功能入口: Conflence→空间→创建空间 功能说明: (1)选择“空白空间”,点击“下一步” (2)填写空间必要信息,点击“创建”按钮,即可完成空间创建 空间名…

力扣 095. 最长公共子序列(C语言+动态规划)

1. 题目 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08…

什么是云原生?零基础学云原生难吗?

伴随着云计算的浪潮,云原生概念也应运而生,而且火得一塌糊涂,但真正谈起“云原生”,大多数非 IT 从业者的认知往往仅限于将服务应用放入云端,在云上处理业务。实际上,云原生远不止于此。 现在越来越多的企…

SVN服务端客户端安装配置

SVN服务端客户端安装配置 1、服务端下载安装1.1 软件下载1.2 软件安装 2、客户端下载安装2.1 软件下载2.2 软件安装2.2.1 安装2.2.2. 汉化 3、SVN配置3.1 SVN服务器端配置3. 2 SVN客户端配置 1、服务端下载安装 1.1 软件下载 百度网盘链接:VisualSVN-Server-5.3.0…

SAP-QM-采购过程模式与特性检验不匹配QD244

在创建物理样本,维护检验计划的采样过程时报错,从报错看,这个采样过程的评估模式和检验特性不匹配, 评估模式为700 700是根据特征上下线,计算平均值进行评估,是定量特性,经过测试 是检验特性的…

Window 窗口函数 (Spark Sql)

在 Spark SQL 中,Window 函数是一种用于在查询结果集中执行聚合、排序和分析操作的强大工具。它允许你在查询中创建一个窗口,然后对窗口内的数据进行聚合计算。 import org.apache.spark.sql.expressions.Window import org.apache.spark.sql.functions…

Typora使用教程

相关介绍 Typora是一款所写即所得的Markdown编辑器,支持跨平台Window,Linux和Mac都可以。 相关链接 Typora安装包历史版本地址:官网历史版本地址 问题及知识点汇总 关于图片的问题-设置图像自动复制到自己指定文件夹下 问题描述 在写笔记的过程中&am…

【yolov8系列】yolov8的目标检测、实例分割、关节点估计的原理解析

1 YOLO时间线 这里简单列下yolo的发展时间线,对每个版本的提出有个时间概念。 2 yolov8 的简介 工程链接:https://github.com/ultralytics/ultralytics 2.1 yolov8的特点 采用了anchor free方式,去除了先验设置可能不佳带来的影响借鉴Genera…

MongoDB 未授权访问漏洞

简介 MongoDB是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,它的特点是高性能、易部署、易使用,存储数据非常方便,默认情况下是没有认证的这就导致不熟悉它的研发人员部署后没有做访问控制导致…

智能化安全巡更巡查系统—提升安全管理效率

传统的巡检都是手工完成,记录、拍照,回到办公室打印表单再交给作业队伍整改,再去现场核实复查,流程繁琐,效率低。而且大部分工地为了减少麻烦,人员往往都是口头沟通,存在很大质量风险&#xff0…

模型量化笔记--KL散度量化

KL散度量化 前面介绍的非对称量化中,是将数据中的min值和max值直接映射到[-128, 127]。 同样的,前面介绍的对称量化是将数据的最大绝对值 ∣ m a x ∣ |max| ∣max∣直接映射到127。 上面两种直接映射的方法比较粗暴,而TensorRT中的int8量化…

家中种绿植有什么风水讲究?

现在越来越多的人,都居住在小区高楼里,与绿植的接触也越来越少, 因此,很多人会选择在自己家中种上几株绿植。在家里种植植物,不仅美观,陶冶情操,还能净化空气,为家中增添好的风水。 …

凉鞋的 Unity 笔记 109. 专题一 小结

109. 专题一 小结 在这一篇,我们来对第一个专题做一个小的总结。 到目前为止,大家应该能够感受到此教程的基调。 内容的难度非常简单,接近于零基础的程度,不过通过这些零基础内容所介绍的通识内容其实是笔者好多年的时间一点点…

下拉选择器的树状结构图

类似&#xff1a;【Vue-Treeselect 和 vue3-treeselect】树形下拉框 一&#xff1a;图 二&#xff1a;如果有多层级的数据结构&#xff0c;可以用treeselect插件实现 1、安装&#xff1a; npm install --save riophae/vue-treeselect 2、实现&#xff1a; <el-form ref&qu…

树叶识别系统python+Django网页界面+TensorFlow+算法模型+数据集+图像识别分类

一、介绍 树叶识别系统。使用Python作为主要编程语言开发&#xff0c;通过收集常见的6中树叶&#xff08;‘广玉兰’, ‘杜鹃’, ‘梧桐’, ‘樟叶’, ‘芭蕉’, ‘银杏’&#xff09;图片作为数据集&#xff0c;然后使用TensorFlow搭建ResNet50算法网络模型&#xff0c;通过对…

vue3弹窗中循环生成表单的校验和重置问题

应用场景&#xff1a; 1、弹框里的表单是根据后台返回的时段生成的&#xff0c;后台返回几个时段&#xff0c;就渲染几组表单。 -1- 重置&#xff1a;遍历每个表单&#xff0c;获取当前表单的引用&#xff0c;在resetFields() -2- 校验&#xff1a;创建一个数组来存储每个表单的…

java线程

1. 总体路线 pom依赖 <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies><dependency> <groupId>org.projectlombo…