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

请问Java8进阶水平中,常用的设计模式有哪些?

设计模式通常被分为三大类:创建型(Creational)、结构型(Structural)和行为型(Behavioral)。以下是这20个设计模式的分类:

创建型(Creational)设计模式:

  1. 单例模式(Singleton):确保一个类只有一个实例,并提供一个全局访问点。
  2. 工厂方法模式(Factory Method):定义一个创建对象的接口,让子类决定要实例化的类是哪一个。
  3. 抽象工厂模式(Abstract Factory):提供一个接口,用于创建一系列相关或依赖对象,而不需要指定它们的具体类。
  4. 建造者模式(Builder):将一个复杂对象的构建与其表示分离,允许通过指定复杂对象的不同部分逐步构造一个复杂对象。
  5. 原型模式(Prototype):通过复制现有的实例来创建新的实例。

结构型(Structural)设计模式:

  1. 适配器模式(Adapter):允许将不兼容的接口转换为一个可以使用的兼容接口。
  2. 桥接模式(Bridge):将抽象部分与其实现部分分离,使它们可以独立地变化。
  3. 组合模式(Composite):允许将对象组合成树形结构以表示“部分-整体”的层次结构。
  4. 装饰器模式(Decorator):动态地添加额外的功能到一个对象上,同时不改变其类结构。
  5. 外观模式(Facade):为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口。
  6. 享元模式(Flyweight):以共享的方式高效地支持大量细粒度的对象。
  7. 代理模式(Proxy):为其他对象提供一个代理或占位符,以控制对这个对象的访问。

行为型(Behavioral)设计模式:

  1. 观察者模式(Observer):当对象间存在一对多关系时,则使用观察者模式。一个被观察的对象变化时,所有依赖它的对象都会得到通知并自动更新。
  2. 策略模式(Strategy):定义一系列算法,把它们一个个封装起来,并使它们可以互换。
  3. 命令模式(Command):将一个请求封装为一个对象,从而允许用户使用不同的请求、队列或日志请求来参数化其他对象。
  4. 模板方法模式(Template Method):定义一个算法的骨架,将一些步骤延迟到子类中实现。
  5. 迭代器模式(Iterator):提供一种方法来顺序访问一个聚合对象的元素,而不暴露其内部表示。
  6. 责任链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。
  7. 中介者模式(Mediator):定义一个中介对象来简化其他对象之间的交互。
  8. 状态模式(State):允许对象在其内部状态改变时改变它的行为。

每个设计模式都提供了解决特定问题的方法,理解它们有助于开发者在面对类似问题时能够快速找到解决方案。

我选择工厂模式单例模式桥接模式装饰器模式命令模式
使用场景:

  • 工厂模式:PDF功能模块
  • 单例模式:系统配置对象
  • 桥接模式:PDF功能模块
  • 装饰器模式:PDF功能模块
  • 命令模式:流程模块?
http://www.lryc.cn/news/360082.html

相关文章:

  • 力扣--最大子数组和
  • C# 中的字符与字符串
  • TPM之VMK密封
  • Fastjson 反序列化漏洞[1.2.24-rce]
  • 【面试宝藏】Go基础面试题其一
  • python如何安装pyqt4
  • 调用上传文件接口出现格式错误
  • leetcode148. 排序链表,归并法,分治的集大成之作
  • 一维时间序列信号的小波模极大值分解与重建(matlab R2018A)
  • 五分钟“手撕”栈
  • MAC也能玩转3A大作 Crossover使用指南 crossover运行战地5
  • docker私有镜像仓库的搭建及认证
  • simCSE句子向量表示(1)-使用transformers API
  • 网络运维的重要性
  • 还不会使用多线程优化代码执行效率?codefun教你在业务场景中使用CompletableFuture进行优化!
  • 数据结构-堆(带图)详解
  • React Native 之 react-native-share(分享)库 (二十三)
  • JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测
  • 游戏心理学Day01
  • 错误模块路径: ...\v4.0.30319\clr.dll,v4.0.30319 .NET 运行时中出现内部错误,进程终止,退出代码为 80131506。
  • 005 CentOS 7.9 RabbitMQ安装及配置
  • Xcode 15 libarclite 缺失问题
  • 绘画智能体分享
  • 7_2、C++程序设计进阶:数据共享
  • d2-crud-plus 使用小技巧(五)—— 搜索时间(或下拉列表)后,点击X清除按钮后返回值为null,导致异常
  • ChatGPT成知名度最高生成式AI产品,使用频率却不高
  • R19 NR移动性增强概况
  • C语言:如何写文档注释、内嵌注释、行块注释?
  • Turtle中circle用法详解
  • stack和queue(1)