
设计模式23+1条
文章平均质量分 82
设计模式23+1条
csdn_tom_168
富贵如可求,虽执鞭之士,吾亦为之。如不可求,从吾所好。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式 - 行为型 - 备忘录模式(Memento Pattern)
备忘录模式是一种行为型设计模式,用于在不破坏对象封装的前提下保存和恢复对象状态。它通过三个核心角色实现:Originator(创建和恢复状态)、Memento(存储状态)和Caretaker(管理状态集合)。该模式适用于撤销/重做、事务回滚、游戏存档等场景,既能保护对象封装性又支持状态回溯,但需注意内存消耗问题。典型实现包括文本编辑器的撤销功能,通过保存历史状态实现操作回退。原创 2025-06-04 08:18:12 · 645 阅读 · 0 评论 -
设计模式 - 行为型 - 中介者模式(Mediator Pattern)
来封装一组对象之间的交互,从而减少对象间的直接依赖,降低系统复杂度。该模式将对象间的网状通信结构转换为星型结构,使交互逻辑集中管理,提升系统的可维护性和扩展性。,让多个对象(称为同事对象)不再直接相互引用,而是通过中介者进行通信。例如,聊天室中的用户不直接互发消息,而是通过聊天服务器中转。其核心思想是**“解耦对象间的复杂交互”**。对于需要统一管理对象交互的场景(如GUI、分布式系统),该模式是降低耦合、提升可维护性的理想选择。,尤其适用于网状通信结构的系统重构。,但需警惕中介者类的。原创 2025-06-04 08:17:08 · 587 阅读 · 0 评论 -
设计模式 - 行为型 - 迭代器模式(Iterator Pattern)
迭代器模式是一种行为型设计模式,通过封装遍历逻辑和解耦数据结构,为集合提供统一的元素访问方式。其核心是将遍历职责委托给独立的迭代器对象,客户端通过统一接口(如hasNext()、next())访问元素,无需依赖底层数据结构实现。该模式支持多种遍历策略,适用于异构集合遍历、隐藏数据结构细节等场景,但可能增加类数量和性能开销。典型应用包括Java集合框架和文件系统遍历,其优势在于高内聚低耦合,但需注意避免过度设计。实现时可通过工厂模式管理迭代器创建,或结合流式API优化操作。原创 2025-06-04 08:16:19 · 859 阅读 · 0 评论 -
设计模式 - 行为型 - 解释器模式(Interpreter Pattern)
解释器模式是一种行为型设计模式,用于解析和执行特定语言的语法规则。它通过将语法分解为对象(终结符/非终结符表达式)并构建抽象语法树来实现解释逻辑,适用于正则表达式、数学公式等场景。该模式的优点在于高扩展性和逻辑集中,但可能因类膨胀和递归解析导致性能问题。典型实现包含抽象表达式接口、上下文类和客户端构建语法树的过程,实际应用于SpEL、规则引擎等系统。开发者需权衡其灵活性与性能限制,必要时结合编译器优化技术使用。(148字)原创 2025-06-04 08:15:11 · 606 阅读 · 0 评论 -
设计模式 - 行为型 - 状态模式(State Pattern)
状态模式是一种行为型设计模式,通过将对象状态封装为独立类,使对象能在内部状态变化时动态改变行为,消除复杂条件分支。核心角色包括Context(持有状态)、State(抽象接口)和ConcreteState(具体实现)。该模式解耦状态与行为,支持动态切换,适用于电梯控制、游戏角色状态等场景。优点为高内聚低耦合、易维护,缺点是可能产生过多类。与策略模式不同,状态切换由上下文或状态类自行完成。典型实现如Spring状态机和TCP连接管理,适用于状态驱动的复杂系统。原创 2025-06-04 08:14:33 · 772 阅读 · 0 评论 -
设计模式 - 行为型 - 访问者模式(Visitor Pattern)
访问者模式是一种行为型设计模式,通过分离算法与对象结构,在不修改元素类的前提下实现新操作。核心机制是双重分派,元素通过accept()接收访问者,访问者通过visit()处理元素。该模式适用于结构稳定但需频繁扩展操作的场景,如编译器分析、文档导出等。优点包括操作集中管理、高扩展性,缺点可能破坏封装性且要求元素结构稳定。实现时需设计Visitor接口和Element接口,并通过对象结构管理元素集合。典型应用包括Java注解处理、ASM字节码框架等,适用于需要统一处理复杂结构的系统。原创 2025-06-04 08:00:00 · 538 阅读 · 0 评论 -
设计模式 - 行为型 - 观察者模式(Observer Pattern)
观察者模式是一种行为型设计模式,通过定义对象间一对多依赖关系,实现状态变化的自动通知机制。核心包括抽象主题(Subject)、具体主题(ConcreteSubject)、观察者接口(Observer)和具体观察者(ConcreteObserver)四个角色,支持推/拉两种数据传递方式。该模式解耦了观察者与被观察者,具有动态扩展和事件驱动优势,但需注意性能开销和循环依赖风险。典型应用包括发布/订阅系统、GUI事件处理和监控告警等。Java实现示例展示了气象数据更新时自动通知显示设备的场景,体现了模式的核原创 2025-06-04 00:53:51 · 477 阅读 · 0 评论 -
设计模式 - 行为型 - 命令模式(Command Pattern)
摘要: 命令模式是一种行为型设计模式,通过将请求封装为对象实现发送者与接收者的解耦,支持撤销/重做、队列化等操作。其核心包含命令接口、具体命令、调用者和接收者四个角色,适用于事务管理(如撤销功能)、任务调度(如线程池)等场景。优点在于解耦性强、扩展灵活,但可能因类膨胀增加复杂度。典型实现如智能家居的遥控器控制,Java示例展示灯光开关的封装与调用。该模式在GUI事件处理、数据库事务中广泛应用,与策略模式的区别在于其侧重请求封装而非算法替换。(150字)原创 2025-06-04 00:45:50 · 586 阅读 · 0 评论 -
设计模式 - 行为型 - 模板方法模式(Template Method Pattern)
模板方法模式是一种行为型设计模式,通过定义算法框架并延迟部分步骤到子类实现代码复用与扩展性。该模式包含抽象类(定义算法骨架)和具体子类(实现可变步骤)两个核心角色,具有代码复用、扩展性强和流程控制等优点,但也存在继承依赖性强等缺点。适用于多流程共享骨架、框架设计等场景,如Spring的JdbcTemplate和Java IO流等实际应用。相比策略模式,它更注重固定流程中的局部修改。该模式通过平衡父类流程控制和子类灵活扩展,成为构建可扩展架构的重要工具。原创 2025-06-04 00:38:21 · 916 阅读 · 0 评论 -
设计模式 - 行为型 - 策略模式(Strategy Pattern)
策略模式是一种行为型设计模式,它将算法抽象为独立接口,通过封装具体策略类实现算法的动态切换。该模式通过上下文对象调用策略,消除复杂条件分支,提升代码灵活性和扩展性。其核心优势包括解耦算法与业务逻辑、支持新增策略无需修改现有代码,适用于支付方式选择、促销计算等多算法场景。尽管可能增加类数量,但策略模式通过单一职责和开闭原则显著提升系统可维护性。典型实现如电商促销策略的动态切换,结合工厂模式可优化策略管理。原创 2025-06-04 00:32:16 · 241 阅读 · 0 评论 -
设计模式 - 行为型 - 责任链模式(Chain of Responsibility Pattern)
责任链模式是一种行为型设计模式,通过将多个处理对象连接成链,允许请求沿链传递直至被处理,实现请求发送者与接收者的解耦。该模式具有高扩展性和灵活性,适合多级审批、日志处理等场景。核心包括抽象处理者、具体处理者等角色,支持动态增删处理节点。优点在于低耦合和动态编排,但可能存在性能损耗。实际应用中可见于Servlet Filter、Spring Security等框架。需注意控制链长度,可通过配置文件管理处理顺序。原创 2025-06-04 00:23:46 · 716 阅读 · 0 评论 -
设计模式 - 结构型 - 代理模式(Proxy Pattern)
代理模式是一种结构型设计模式,通过引入代理对象控制对目标对象的访问。它通过代理对象替代目标对象,提供相同接口,在不修改目标对象的前提下实现访问控制、功能增强(如缓存、权限校验)和延迟加载。模式包含抽象主题、真实主题和代理类三个核心角色,可通过静态或动态代理实现。优点包括解耦性、灵活性和性能优化,但可能带来类膨胀和性能损耗。适用于远程代理、虚拟代理、保护代理等场景,在Spring AOP、RPC框架中有广泛应用。该模式与适配器、装饰器模式的区别在于侧重访问控制而非接口兼容或功能叠加。原创 2025-06-04 00:16:27 · 846 阅读 · 0 评论 -
设计模式 - 结构型 - 享元模式(Flyweight Pattern)
有效应对大规模对象场景下的资源消耗问题。其核心价值在于平衡内存占用与性能,但需注意状态划分的合理性与线程安全。在涉及高并发或资源敏感型系统(如游戏、编辑器)中,合理应用享元模式可显著提升效率,但需避免过度设计导致复杂度失控。(内部状态)来支持大量细粒度对象的复用,而可变状态(外部状态)由客户端维护,从而减少重复对象的创建。例如,在文档编辑器中,字符的字体、颜色作为内部状态共享,而位置坐标作为外部状态独立管理。,通过共享对象来减少内存占用,特别适用于存在大量相似对象的场景。,通过共享内部状态降低资源消耗。原创 2025-06-04 00:10:19 · 396 阅读 · 0 评论 -
设计模式 - 结构型 - 装饰模式(Decorator Pattern)
装饰模式(Decorator Pattern)是一种结构型设计模式,通过动态包装对象扩展功能,避免继承带来的类爆炸问题。其核心是组合替代继承,在不修改原对象的情况下分层添加职责(如为照片加相框或煎饼加配料)。该模式包含抽象组件、具体组件、抽象装饰器和具体装饰器四个角色,通过嵌套实现功能叠加(如Java的BufferedInputStream包装FileInputStream)。 优点包括动态扩展、解耦代码和透明性,缺点是可能增加类数量和调试难度。适用于日志增强、多级缓存、IO流处理等场景,遵循开闭原则但需权原创 2025-06-04 00:00:31 · 780 阅读 · 0 评论 -
设计模式 - 结构型 - 组合模式(Composite Pattern)
组合模式是一种结构型设计模式,它通过树形结构组织对象,使客户端能以统一方式处理单个对象和组合对象。该模式定义抽象组件(Component)作为基类,叶子节点(Leaf)表示末端对象,容器节点(Composite)管理子节点集合。典型应用包括文件系统、组织架构和GUI控件树等层次化场景。组合模式的优点在于简化客户端代码、支持动态扩展,但会增加设计复杂度。实现时需注意透明式(统一接口)与安全式(区分叶子/容器)两种方式的选择。通过抽象与递归机制,该模式有效解耦了客户端与复杂对象结构。原创 2025-06-03 23:53:38 · 211 阅读 · 0 评论 -
设计模式 - 结构型 - 桥接模式(Bridge Pattern)
桥接模式是一种结构型设计模式,通过将抽象部分与实现部分分离,使两者能独立扩展。该模式使用组合代替继承,解决多维度变化导致的类爆炸问题。核心角色包括抽象层、扩展抽象、实现接口和具体实现。优点在于降低耦合度、减少子类数量和提高灵活性,但会增加设计复杂度。典型应用包括图形系统、跨平台开发和数据库驱动切换等场景。通过合理识别独立变化维度,桥接模式能有效提升系统扩展性和可维护性。原创 2025-06-03 23:44:15 · 376 阅读 · 0 评论 -
设计模式 - 结构型 - 适配器模式(Adapter Pattern)
适配器模式是一种结构型设计模式,用于解决接口不兼容问题,使原本不能协同工作的类或对象能够一起工作。其核心是通过中间转换层(适配器)将已有接口转换为客户端期望的接口形态,实现接口兼容性。适配器模式分为类适配器(继承实现)和对象适配器(组合实现),后者更灵活推荐使用。优点包括代码复用、解耦和灵活扩展,但可能增加系统复杂性。典型应用场景包括系统集成、遗留系统升级和硬件接口转换。实际案例有Java集合框架、Spring的JdbcTemplate和日志框架整合等。该模式平衡了灵活性与复杂度,是解决接口兼容问题的有效方原创 2025-06-03 23:37:30 · 309 阅读 · 0 评论 -
设计模式 - 结构型 - 外观模式(Facade Pattern)
外观模式是一种结构型设计模式,通过定义统一的高层接口来简化复杂系统的交互。它通过封装子系统复杂性,降低客户端与系统的耦合度,使客户端仅需与外观类交互而无需了解内部逻辑。核心角色包括外观类、子系统类和客户端。该模式适用于复杂系统入口、分层架构、第三方库封装等场景,能显著提升系统易用性和可维护性,但也需注意避免过度封装。典型应用包括智能家居控制、Spring框架的Bean管理等。原创 2025-06-03 23:21:44 · 246 阅读 · 0 评论 -
设计模式 - 创建型 - 原型模式(Prototype Pattern)
原型模式是一种创建型设计模式,通过克隆现有对象高效生成新实例,适用于高成本对象创建或动态配置场景。其核心分为抽象原型、具体原型和客户端三个角色,支持浅克隆(共享引用)和深克隆(完全独立)两种实现方式。相比工厂模式,原型更适合复杂对象构造和性能优化场景,但深克隆实现较复杂。典型应用包括Java的Cloneable接口、Spring原型Bean及游戏角色复制。该模式显著提升对象创建效率,但需权衡内存管理与实现复杂度。原创 2025-06-03 23:12:59 · 755 阅读 · 0 评论 -
设计模式 - 创建型 - 生成器模式(Builder Pattern)
将复杂对象的构建过程模块化,尤其适用于需灵活配置多部件的场景。其优势在于提升代码可维护性与扩展性,但需权衡类数量增加带来的复杂度。在需要精细控制对象构造流程或支持多形态输出的系统中,该模式是解决构造函数臃肿问题的理想选择。生成器模式将一个复杂对象的构建过程分解为多个独立步骤,通过统一的构建流程生成不同表示形式的对象。,通过分离对象的构建过程与表示,支持灵活创建不同形式的产品。生成器模式(Builder Pattern)是一种创建型设计模式,专注于。,允许通过配置不同生成器实现对象的灵活组合。原创 2025-06-03 23:04:16 · 662 阅读 · 0 评论 -
设计模式 - 创建型 - 工厂方法模式(Factory Method Pattern)
工厂方法模式是一种创建型设计模式,通过抽象工厂接口将对象创建延迟到子类,实现创建与使用逻辑的解耦。该模式符合开闭原则,支持动态扩展,但会增加类数量。核心结构包括抽象产品、具体产品、抽象工厂和具体工厂四个角色。相比简单工厂模式,工厂方法模式更灵活但更复杂,适用于日志系统、框架设计等需要多态创建的场景。示例展示了如何用Java实现该模式,通过子类工厂创建具体产品。该模式提升了系统扩展性,但需根据实际需求权衡使用。原创 2025-06-03 22:36:55 · 770 阅读 · 0 评论 -
设计模式 - 创建型 - 抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式是一种创建型设计模式,用于生成一系列相关或依赖的对象族(如不同操作系统的UI组件),而无需指定具体类。它通过抽象接口解耦客户端与产品创建过程,确保产品兼容性并支持灵活切换产品族。核心结构包括抽象工厂、具体工厂、抽象产品和具体产品四个角色。与工厂方法模式相比,抽象工厂更适用于多产品族的复杂场景,如跨平台系统、数据库兼容等。优点是高扩展性和产品一致性,缺点是新增产品类型需修改接口。典型应用包括Java AWT、Spring框架等。原创 2025-06-03 22:54:05 · 680 阅读 · 0 评论 -
设计模式 - 创建型 - 单例模式(Singleton pattern)
Java单例模式主要实现方式包括:1.枚举式(线程安全且防反序列化,Joshua Bloch推荐);2.饿汉式(类加载时初始化);3.懒汉式(线程不安全);4.同步懒汉式(synchronized保证安全);5.双重校验锁(DCL);6.静态内部类(推荐方式);7.容器式(管理多个单例)。枚举方式在安全性、反序列化和反射防护方面表现最佳,静态内部类适合延迟加载场景。非线程安全的懒汉式应当避免使用,在需要高安全性和简洁性时推荐采用枚举实现方式。原创 2025-06-03 15:17:03 · 402 阅读 · 0 评论 -
设计模式-创建型-简单工厂模式(Simple Factory Pattern)
简单工厂模式是一种创建型设计模式,通过工厂类根据传入参数动态创建对象,实现对象创建与使用解耦。核心包含三个组件:抽象产品、具体产品和工厂类。该模式优点是降低耦合、简化维护,但违反开闭原则且扩展性受限。适用于对象种类少、不关心创建细节或快速原型开发的场景。相比工厂方法模式,简单工厂实现更简单但扩展性较差。典型应用包括图形绘制、计算器等,当产品类型固定且无需频繁扩展时,简单工厂是合适选择。原创 2025-06-03 22:27:35 · 259 阅读 · 0 评论