Java设计模式 二十四 设计模式组合

探索设计模式的魅力:创新思维与面试中的设计模式问题(超详细38题3万8字参考答案) 设计模式是在软件设计中经常出现的问题的解决方案。它是由经验丰富的开发人员在解决常见设计问题时总结出来的一套通用的解决方案,是一种对反复出现的设计问题的可重用的抽象描述。设计模式可以用于高质量的软件开发,它在软件开发过程中提供了一种复用可扩展性简化代码维护等方面的解决方案。设计模式通常包括以下几个要素:用来描述问题、解决方案和效果的简洁术语。描述了在何时使用该模式以及问题的背景和条件。 阅读详情

设计模式组合指的是将多个设计模式结合起来,构建一个更加灵活和高效的系统。以下是一些常见的设计模式组合,以及它们在实际场景中的应用:


1. 组合模式 + 迭代器模式

  • 目的: 组合模式用于表示树形结构,迭代器模式用于遍历这种结构。
  • 应用场景:
    • 文件系统:文件夹和文件的组合结构,迭代器用于遍历所有文件。
    • 菜单系统:菜单和子菜单的嵌套结构,迭代器用于逐项遍历菜单。

2. 工厂模式 + 单例模式

  • 目的: 单例模式确保工厂类的唯一性,工厂模式负责创建对象。
  • 应用场景:
    • 数据库连接工厂:单例模式确保工厂实例的唯一性,工厂方法负责生成数据库连接对象。
    • 配置文件管理:单例模式确保只有一个配置工厂,工厂模式创建不同类型的配置文件解析器。

3. 策略模式 + 模板方法模式

  • 目的: 模板方法模式定义算法的骨架,策略模式允许动态选择某些步骤的实现。
  • 应用场景:
    • 数据处理系统:模板方法定义数据处理的框架,策略模式动态选择不同的算法。
    • 游戏AI:模板方法定义游戏角色行为的主逻辑,策略模式实现不同的角色AI策略。

4. 代理模式 + 装饰器模式

  • 目的: 代理模式控制对象的访问,装饰器模式动态扩展对象的功能。
  • 应用场景:
    • 访问控制和日志记录:代理模式用于权限检查,装饰器模式用于添加日志功能。
    • 网络通信:代理模式用于控制请求的访问,装饰器模式增加压缩或加密功能。

5. 观察者模式 + 中介者模式

  • 目的: 观察者模式用于事件通知,中介者模式协调观察者之间的交互。
  • 应用场景:
    • GUI事件处理:观察者模式用于通知事件,中介者模式管理组件间的复杂交互。
    • 消息系统:观察者模式处理订阅通知,中介者模式在不同模块间转发消息。

6. 状态模式 + 策略模式

  • 目的: 状态模式管理对象的状态转换,策略模式定义每个状态的行为。
  • 应用场景:
    • 游戏角色状态:状态模式管理角色的不同状态,策略模式实现每个状态下的行为。
    • 工作流引擎:状态模式处理流程状态切换,策略模式定义每个步骤的逻辑。

7. 命令模式 + 责任链模式

  • 目的: 命令模式封装请求,责任链模式将请求沿链传递,直到找到处理者。
  • 应用场景:
    • 请求处理系统:命令模式封装请求,责任链模式动态选择合适的处理者。
    • UI事件处理:命令模式封装按钮点击事件,责任链模式沿组件链传递事件。

8. 工厂模式 + 抽象工厂模式

  • 目的: 工厂方法用于创建单一产品,抽象工厂创建一组相关联的产品。
  • 应用场景:
    • GUI工具包:工厂方法创建单一的按钮或文本框,抽象工厂创建一整套组件(按钮、文本框、菜单)。
    • 数据访问层:工厂方法生成单一的DAO对象,抽象工厂提供一组相关联的DAO对象。

9. 建造者模式 + 抽象工厂模式

  • 目的: 抽象工厂模式创建一组对象,建造者模式负责按照特定步骤构建复杂对象。
  • 应用场景:
    • 游戏地图生成:抽象工厂创建地图中的不同组件,建造者模式按顺序组合这些组件生成完整地图。
    • 报表生成:抽象工厂创建表格、图表等组件,建造者模式按照规则组合生成报表。

10. 桥接模式 + 策略模式

  • 目的: 桥接模式分离抽象和实现,策略模式提供灵活的算法选择。
  • 应用场景:
    • 图形绘制:桥接模式分离形状和渲染方式,策略模式提供不同的填充算法。
    • 网络传输:桥接模式分离传输协议和数据格式,策略模式提供动态选择的加密算法。

11. 责任链模式 + 中介者模式

  • 目的: 责任链模式用于处理请求链,中介者模式协调多个责任链。
  • 应用场景:
    • 事件处理系统:责任链模式处理事件,中介者模式协调不同事件处理器。
    • 工作流系统:责任链模式处理任务链,中介者模式在不同模块间分发任务。

12. 访问者模式 + 组合模式

  • 目的: 组合模式表示树形结构,访问者模式实现对树中元素的多种操作。
  • 应用场景:
    • 文件系统:组合模式表示文件夹和文件的结构,访问者模式实现文件统计或显示。
    • 编译器:组合模式表示语法树结构,访问者模式实现代码生成或优化。

13. 装饰器模式 + 模板方法模式

  • 目的: 模板方法定义操作框架,装饰器模式动态扩展框架中的某些步骤。
  • 应用场景:
    • 数据处理:模板方法定义数据处理流程,装饰器模式动态添加日志或性能监控。
    • 图形渲染:模板方法定义绘制逻辑,装饰器模式动态添加阴影或特效。

14. 命令模式 + 观察者模式

  • 目的: 命令模式封装请求,观察者模式通知多个接收者。
  • 应用场景:
    • 事件驱动系统:命令模式封装事件,观察者模式通知订阅者处理事件。
    • 游戏控制系统:命令模式封装玩家操作,观察者模式通知所有玩家或对象同步状态。

15. 工厂模式 + 代理模式

  • 目的: 工厂模式负责对象的创建,代理模式控制对象的访问。
  • 应用场景:
    • 缓存代理:工厂模式创建对象,代理模式在对象创建前检查缓存。
    • 安全代理:工厂模式创建对象,代理模式控制访问权限。

总结

不同设计模式的组合可以解决复杂的系统问题。以下是几种组合方式的常见目标:

  1. 结构性增强:

    • 组合模式 + 迭代器模式
    • 工厂模式 + 单例模式
  2. 行为扩展:

    • 策略模式 + 模板方法模式
    • 访问者模式 + 组合模式
  3. 操作控制:

    • 代理模式 + 装饰器模式
    • 责任链模式 + 中介者模式
  4. 灵活性提升:

    • 桥接模式 + 策略模式
    • 命令模式 + 观察者模式

根据实际需求选择合适的模式组合,可以大幅提升系统的灵活性、可维护性和扩展性。

大模型事件抽取学习——论文学习笔记《LLMs Learn Task Heuristics from Demonstrations:......》 本篇博客介绍一篇发表在2024 ACL main上的文章:《LLMs Learn Task Heuristics from Demonstrations: A Heuristic-Driven Prompting Strategy for Document-Level Event Argument Extraction》 方向:大模型事件抽取 本篇博客为个人阅读论文的总结与笔记,在这里进行简单的分享 论文链接:https://arxiv.org/abs/ 阅读详情

相关推荐

ESP8266红外控制美的空调:从协议解析到Home Assistant集成

红外遥控技术作为一种经典的非接触式控制方式,其原理是通过红外发光二极管发射经过特定频率调制的光信号来传递指令。在物联网和智能家居领域,利用微控制器如ESP8266模拟红外信号,成为将传统家电接入智能生态系统的关键技术。这项技术通过精准解析和生成符合设备厂商私有协议的红外编码,实现了对空调、电视等设备的远程与自动化控制,具有很高的实用价值。本文聚焦于美的空调的红外协议,深入探讨了其脉冲宽度调制(PWM)和全量式编码的特点,并提供了基于ESP8266的完整解决方案,包括硬件连接、库函数API详解以及如何将其无缝

weixin_30718391的博客 400

JAVA 二十三种设计模式大全(二十四)组合实体模式(Composite Entity Pattern)

文章目录概念代码 概念 组合实体模式(Composite Entity Pattern)用在 EJB 持久化机制中。一个组合实体是一个 EJB 实体 bean,代表了对象的图解。当更新一个组合实体时,内部依赖对象 beans 会自动更新,因为它们是由 EJB 实体 bean 管理的。以下是组合实体 bean 的参与者。 组合实体(Composite Entity) - 它是主要的实体 bean。它可以是粗粒的,或者可以包含一个粗粒度对象,用于持续生命周期。 粗粒度对象(Coarse-Grained Obje

自救 唯有自强 212

简单概述人形机器人的“大脑、小脑”

原创 仲翔云人形机器人产业通2024年09月13日 19:41上海人形机器人的大脑和小脑是其控制系统的关键组成部分,它们模拟了人类大脑和小脑的功能,以实现复杂的运动控制和决策过程。

AI生成曾小健3 2069

java学习视频 java常用23种设计模式

java学习视频主要详细讲解java常用23种设计模式,此套java教程为百度网盘下载! 我曾经花了1万多报过java培训班.可能太过愚钝,感觉白学了。这套java学习视频讲的很好,我培训过,虽说学的很差,但是耳濡目染也算有点基础,写作业的时候没什么思路,但是参考了别人的思路,自己也能写完,写完作业感觉很有成就感。祝大家学有所成!   java学习视频介绍   java常用23...

fengliaoai的博客 1万+

硅传CC1310二次开发必备:手把手教你用JTAG解锁被锁定的Flash存储器

本文针对硅传CC1310模块二次开发中常见的Flash锁定问题,提供了从原理剖析到实战操作的完整解决方案。详细介绍了如何使用Uniflash和Flash Programmer 2等工具进行Flash解锁和擦除,并强调了硬件连接稳定性与供电质量的关键作用,帮助开发者彻底解决烧录障碍,为后续应用开发铺平道路。

weixin_29189373的博客 252

馈电网络设计:通过Smith圆图工具完成微带线到同轴探针的阻抗匹配

Smith圆图通过图形化阻抗变换路径,显著简化微带线到同轴探针的匹配设计。设计需结合理论计算(微带线阻抗公式、探针等效模型)、圆图操作(串联/并联元件移动规则)及仿真验证,最终实现宽带低反射匹配。

百态·数智思维 | 聚焦大数据、量化与未来AI 1106

二十四种设计模式(1)-概述

前言 设计模式每个开发者都会或多或少的接触过,使用过,设计模式的目的很简单,就是一些解决问题的方案,经过时间的检验,这种方案是最优的,这就形成了一套设计模式。很多的架构都是基于多种设计模式开发的,学习设计模式有利于我们更好的理解源码,提高学习水平。 我们最常听说的设计模式有23种,也有人说是24种,本系列文章默认为24种。设计模式很多,但是在真正的开发过程中,我们用到的也就是我们熟悉的几种,本系列文章就是挑选一部分常用的设计模式,在开发中熟练使用即可。下面会根据设计模式的分类进行讲解。 不管是什么设计模式,

renfujun2012的博客 1537

⑨【从0制作自己的ros导航小车:上位机篇】04、使用gmapping建图

前面的文章已经能够实现在odom坐标系下显示小车模型和里程计数据了,本文加上激光slam必不可少的传感器雷达,先进行测试,然后直接开始建图!

海风的博客 2915

深入浅出设计模式【二十四、终章———选择指南、过渡设计、实际案例、经验教训】

本文总结了设计模式的选择与组合应用指南。通过对比策略与状态、装饰器与代理等相似模式的核心区别,提出根据需求变化点选择模式的决策流程,强调避免过度设计和模式滥用。文中列举了组合模式+访问者模式等常用组合方案,并以电商订单系统为例展示模式的实际应用,分析其收益与代价。最后指出模式是解决问题的手段而非目标,应通过持续重构引入模式,而非预先过度设计。理解模式意图比死记结构更重要,同时应结合现代框架灵活运用模式。

NeoLshu的博客 885

C#与西门子PLC通讯——新手快速入门

本文基于C# .Net Core和西门子博图TIA Portal V17搭建。由于手边没有西门子PLC实物,所以采用S7-PLCSIM Advanced V4.0作为模拟PLC,以实现0成本完成通讯测试实例。这篇入门笔记解决了新手第一次上手实践时遇到的坑,并且有意忽略了实际项目中会遇到的逻辑交互和更多的数据格式问题。

吾家有猫名探花的博客 2万+

ICLR 2022)ODConv:即插即用的动态卷积 (附代码)

一定程度上讲,ODConv可以视作CondConv的延续,将CondConv中一个维度上的动态特性进行了扩展,同时了考虑了空域、输入通道、输出通道等维度上的动态性,故称之为全维度动态卷积。ODConv是一种动态卷积算法,它的原理是在卷积过程中,根据输入数据的特征动态地调整卷积核的形状和大小,以适应不同的输入数据。具体来说,ODConv通过引入一个可学习的形变模块,根据输入数据的特征动态地调整卷积核的形状和大小,从而提高了卷积神经网络的性能。此外,相比常规卷积,动态卷积的卷积核参数往往是其n倍。

PLANTTHESON的博客 2万+

java23种设计模式个人整理_GoF设计模式合集

1 概述 这篇文章是对GoF23种设计模式+1种非GoF模式的合集,由笔者自己的笔记整理而来,每个模式都详细描述了步骤,角色等,以及使用Java实现的具体的例子,下面是目录:基础设计模式概述UML基础创建型模式单例模式简单工厂模式(非GoF模式)工厂方法模式抽象工厂模式原型模式建造者模式结构型模式适配器模式桥接模式组合模式装饰模式外观模式享元模式代理模式行为型模式职责链模式命令模式解释器模式迭代器...

weixin_39669133的博客 105

Vue3 - 详细实现调用浏览器摄像头拍照并生成图片预览,支持将抓拍的图像保存到用户本地或上传到服务器、调取前置摄像头和后置摄像头,开启摄像头并进行拍照,vue实现调用摄像头,电脑或手机调用摄像头拍照

vue3,nuxt3,摄像头,vue3网站打开摄像头拍照,vue3项目调用摄像头实现拍照功能,拍照后怎么保存,照相后上传到后端服务器,开启摄像头黑屏,如何默认后置摄像头,网页开启电脑摄像头并照相,前置拍照,vue3如何调用手机摄像头进行拍摄,拒绝权限后不再弹出了,微信公众号网页,摄像头报错,拍照左右镜像反了,浏览器不兼容怎么办,vue3调用电脑端摄像头实时拍照,解决调用摄像头权限无法弹出,打不开摄像头,Vue3如何调用手机的摄像头,调用本地摄像头实现拍照,浏览器不弹摄像头权限了,如何不使用https运行测试

🏆 前端领域优质创作者 8654

重温java知识(二十四、接口之九:工厂设计模式和代理设计模式的相结合)

工厂设计模式和代理设计模式的相结合使用的例子: package com.mydemo; // 定义核心业务标准 public interface IEat { // 业务方法 public void getFood(); } package com.mydemo; class EatReal implements IEat { @Override public...

yuzhiboyouzhu的博客 187

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

设计模式学习笔记二十四:优雅的菜单 - 组合模式

介绍 组合(COMPOSITE)模式 属于对象结构型模式。将对象组合成树结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。(摘自《GoF设计模式》) 个人见解 我能想到的就是树形菜单的应用,层次关系,只有树形了。。。 UML结构图 场景模拟 菜单结构的一种优雅设计 代码实现 1.统一组件访问接口,即Component: public interf...

weixin_30593261的博客 297

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【搞懂设计模式】设计模式与面向对象原则

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。只有精通了设计模式,才敢说真正理解了软件工程。可以说,设计模式是每一个架构师所必备的技能之一。 PS:虽然本文代码是基于Java(但学习设计模式不拘泥于设计模式,不管是何种面向对象语言,甚至是非OO语言,我觉得都能从设计模式中窥探一丝代码架构的奥秘).

青玉白露的博客 2442

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

深入浅出设计模式【导语、内含23种设计模式和踩坑经验】

设计模式是软件工程中解决常见问题的可复用方案模板,能帮助开发者编写清晰、灵活、可维护的代码。本文将通过系列文章深入解析经典设计模式,包括单例、工厂方法、抽象工厂等,涵盖核心概念、适用场景、类图分析、实现方式及最佳实践。结合Java语言、开源框架和业务案例,旨在为开发者提供理论与实战结合的深度指南,提升系统设计能力。适合希望夯实基础或优化设计的中高级开发者参考。

NeoLshu的博客 969

夜光带你走进 Java 成神之路(二十四)擅长的领域

夜光序言: 时间没有等我,是你忘了带我走,我左手过目不忘的的萤火,右手里是十年一个漫长的打坐。 正文: 以道御术 / 以术识道 我们可以结合 HashMap看组合模式   1、抽象构件:总的抽象类或者接口,定义一些通用的方法,比如新增、删除。...

夜光的博客 236

设计模式系统学习

设计模式学习过程中,参考了刘伟老师的技术博客(https://blog.youkuaiyun.com/LoveLion/article/category/738450/2?),在学习的过程中也加入了自己的理解,目前逐步更新,内容为设计模式的六大原则和二十四个java项目常用设计模式。 (新的总结跳转地址) 模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案...

谢谢谢谢呵的博客 543

设计模式学习笔记(二十四)-最后的总结

一,什么是设计模式模式:在某些场景下,针对某类问题的某种通用解决方案场景:项目环境问题:约束条件,项目目标等解决方案:通用、可以复用的设计,解决约束,达到目标二,设计模式的三个分类创建型模式:对象实例化的模式,创建型模式解耦了对象的实例化过程结构型模式:把类或对象结合在一起形成更大的结构行为型模式:类和对象如何交互,及划分责任和算法创建型模式:简单工厂:一个工厂类根据传入的参量决定创建出哪一种产品...

空默寒的博客-学习和积累 313

转载: Java中的24种设计模式与7大原则

七大设计原则 单一职责原则【SINGLE RESPONSIBILITY PRINCIPLE】:一个类负责一项职责. 里氏替换原则【LISKOV SUBSTITUTION PRINCIPLE】:继承与派生的规则. 依赖倒置原则【DEPENDENCE INVERSION PRINCIPLE】:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。即针对接口编程,不要...

光滑的秃头 259

设计模式详解

一、面向对象设计五个基本原则(SOLID) 1.单一职责原则(SRP:Single Responsibility Principle) 一个类或者模块应该有且只有一个改变的原因。 2.开闭原则(Open Closed Principle) 一个实体是允许在不改变它的源代码的前提下变更它的行为。(用继承来解决) 3.接口隔离原则(ISP:Interface Segregation Principle) 使用多个专门的接口比使用单一的总接口要好。 一个类对另外一个类的依赖性应当是建立在最

qq_40100414的博客 953

你应该知道的 “二十四种设计模式”

1.简单工厂模式2.策略模式3.装饰模式4.代理模式 5.工厂方法模式6.原型模式7.模板方法模式8.外观模式 9.建造者模式10.观察者模式11.抽象工厂模式12.状态模式13.适配器模式14.备忘录模式15.组合模式16.迭代器模式17.单例模式18.桥接模式19.命令模式20.责任链模式21.中介者模式22.享元模式23.解释器模式24.访问者模式 ...

huangruqi888的博客 484

23种设计模式

创建型:5;结构型:7;行为型:11。

zjp_01的专栏 979

设计模式(C++实现)(总)

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式乃一个程序员的内功修炼。 有很多关于设计模式的书籍,比如轻松易读的《大话设计模式》、最为经典的GoF的《设计模式》、国人的经典原创《道法自然》等,网上关于设计模式的资料也非常多,且内容全面。但关于设计模式的书籍和网上的资料使用C++代码来举例实现的并不多,例如G

huashuolin001的博客 1145

Java架构师进阶必备24种设计模式学习资源,速速看过来!

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,是可复用面向对象软件的基础。 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它

m0_56675572的博客 187
上一篇: Java设计模式 十六 策略模式 (Strategy Pattern)
下一篇: Java设计模式 三十三 建造者模式 + 抽象工厂模式
十方来财
十方来财 新星创作者: 编程框架技术领域 新星创作者: 编程框架技术领域
博客等级 码龄14年 8357粉丝 346原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十方来财

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值