设计模式
文章平均质量分 94
new_daimond
宁静致远
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式实战-设计模式组合使用
本文详细介绍了设计模式的组合使用方式,主要包括四种常见组合场景:1)单例+工厂模式用于资源管理;2)观察者+策略模式实现事件处理;3)装饰器+适配器模式完成接口兼容与功能增强;4)建造者+模板方法模式构建复杂对象。每种组合都提供了典型应用场景和Java实现示例,阐述了模式互补带来的优势。文章还分析了Spring框架源码中的模式组合应用实例,并总结了组合使用的核心原则:互补性、层次性、职责分离和可维护性,为设计复杂系统提供了实用指导。原创 2025-09-24 11:45:33 · 719 阅读 · 0 评论 -
设计模式-解释器模式详解
解释器模式是一种行为设计模式,用于定义语言的文法并解释执行表达式。其核心流程包括词法分析、语法分析构建抽象语法树(AST),以及递归解释执行。重点在于设计表达式接口(终结符/非终结符表达式)和实现递归下降解析器。难点包括处理复杂文法规则、性能优化和错误恢复。该模式适用于需要解释特定领域语言(DSL)的场景,如规则引擎、正则表达式等,但复杂文法可能导致类膨胀和执行效率问题。原创 2025-09-24 11:24:05 · 567 阅读 · 0 评论 -
设计模式-访问者模式详解
访问者模式是一种行为型设计模式,它通过双重分派机制将数据结构与数据操作分离。核心思想包括:通过Visitor接口定义操作,Element接口接受访问者,ObjectStructure管理元素集合。重点在于双重分派机制(元素调用访问者方法,访问者再处理具体元素)和对象结构管理。难点包括类型安全、开闭原则的平衡(新增操作容易但扩展元素类型需修改所有访问者)以及性能优化考虑。典型应用场景如编译器语法树处理、文档格式转换等,适合数据结构稳定但操作频繁变化的场景。原创 2025-09-24 11:12:50 · 414 阅读 · 0 评论 -
设计模式-备忘录模式详解
本文总结了备忘录设计模式(Memento Pattern)的核心概念与应用。备忘录模式是一种行为型设计模式,允许在不破坏封装性的前提下捕获对象内部状态并进行状态恢复。文章详细介绍了模式结构(Originator、Memento、Caretaker三要素)、核心流程(状态保存与恢复流程)、代码实现示例,并重点分析了封装性保护、状态管理策略等关键点。同时探讨了内存管理、深拷贝/浅拷贝、并发安全等实现难点,并通过Spring事务回滚机制展示了备忘录模式在框架中的实际应用。原创 2025-09-24 10:49:19 · 496 阅读 · 0 评论 -
设计模式-状态模式详解
状态模式是一种行为型设计模式,允许对象在内部状态改变时改变其行为,使对象看起来修改了其类。它通过将状态封装为独立类,并将行为委托给当前状态对象来实现。核心结构包括环境类(Context)、抽象状态类(State)和具体状态类(ConcreteState)。状态模式能消除大量条件判断,使状态转换更清晰。典型应用包括订单状态管理、工作流引擎等场景。在实现时需注意状态转换的复杂性管理,可通过状态转换表优化。Spring框架中的状态机实现(StateMachine)是典型应用案例。原创 2025-09-23 18:08:11 · 1150 阅读 · 0 评论 -
设计模式-中介者模式详解
中介者模式是一种行为型设计模式,通过中介者对象封装多个对象间的交互,降低对象间的直接耦合。核心结构包括抽象中介者、具体中介者、抽象同事类和具体同事类。中介者集中处理同事对象间的通信,简化交互逻辑。在Java中,可实现注册、消息转发等功能。该模式适用于对象间交互复杂但关系明确的场景,如聊天室、GUI组件交互等。Spring框架中的ApplicationEventMulticaster也体现了中介者思想。面试中常考察其优缺点与应用场景,需注意避免中介者过度复杂化。原创 2025-09-23 17:43:55 · 1020 阅读 · 0 评论 -
设计模式-迭代器模式详解
迭代器模式是一种行为型设计模式,用于顺序访问聚合对象元素而不暴露其内部结构。该模式通过分离遍历逻辑(Iterator接口)与聚合对象(Aggregate接口)实现松耦合,支持多种遍历方式。核心实现包括:定义迭代器接口(hasNext、next等方法)、创建具体聚合类(如ArrayList)及其对应的迭代器实现。重难点在于线程安全,可通过同步锁机制解决。该模式在集合框架中广泛应用,如Java的Collection接口和Spring的CompositeIterator。原创 2025-09-23 17:14:58 · 951 阅读 · 0 评论 -
设计模式-责任链模式详解
责任链模式是一种行为型设计模式,它通过将多个处理对象连接成链,使请求能够沿着这条链传递,直到被某个对象处理。核心思想是解耦请求发送者和接收者,支持动态配置处理流程。模式包含抽象处理者、具体处理者和客户端三个角色,通过链式调用实现请求处理。Spring框架中的拦截器、过滤器等机制都采用了责任链模式。其优势在于灵活性和可扩展性,但需要注意处理链的管理和性能优化。典型应用场景包括审批流程、日志处理和权限验证等系统。原创 2025-09-23 13:56:40 · 1243 阅读 · 0 评论 -
设计模式-原型模式详解
原型模式是一种创建型设计模式,通过复制现有对象来创建新实例,避免重复创建相似对象的开销。其核心流程包括:定义抽象原型接口、实现具体原型类(需区分浅克隆与深克隆)、客户端调用克隆方法创建新对象。重难点在于正确处理对象引用关系的复制,特别是深克隆的实现方式,可通过重写clone方法、复制构造函数或序列化技术实现。该模式在Spring框架的Bean创建、对象池等场景中广泛应用,能有效提升性能和简化复杂对象的创建过程。原创 2025-09-23 11:44:34 · 892 阅读 · 0 评论 -
设计模式-享元模式详解
享元模式是一种结构型设计模式,通过共享相同内在状态来减少内存使用。其核心思想是分离内在状态(共享)与外在状态(客户端维护),通过享元工厂管理共享对象。实现步骤包括:定义抽象享元类、实现具体享元类、创建享元工厂进行对象管理。该模式适用于大量相似对象的场景,如字符渲染、游戏开发等,能显著降低内存消耗。关键难点在于正确识别和分离内外状态,确保共享部分不变而可变部分由客户端处理。在Spring等框架中常用于资源池化管理。原创 2025-09-23 11:20:25 · 1149 阅读 · 0 评论 -
设计模式-组合模式详解
组合模式是一种结构型设计模式,用于表示"部分-整体"的层次结构。核心思想是通过统一接口处理单个对象和组合对象,使客户端代码一致。模式包含抽象构件(Component)、叶子构件(Leaf)和组合构件(Composite)三部分。实现时需考虑透明式(统一接口)与安全式(分离接口)两种方式,优先推荐透明式。在深层嵌套结构中,可通过迭代代替递归优化性能。Spring框架中的Bean组合、文件系统等都是典型应用场景。面试常考模式结构、透明性与安全性比较、实际应用等问题。原创 2025-09-23 11:03:17 · 1073 阅读 · 0 评论 -
设计模式-桥接模式详解
桥接模式是一种结构型设计模式,它将抽象与实现分离,使两者可以独立变化。核心思想是通过组合而非继承来建立类间关系,包含抽象类、扩充抽象类、实现接口和具体实现类四个角色。该模式特别适用于多维度变化的系统,避免类爆炸问题,如消息处理中消息类型和发送方式的组合。Spring框架中的JDBC抽象层是桥接模式的典型应用,DataSource作为抽象与DriverManager实现解耦。面试中常考察桥接与适配器模式的区别,以及如何在多维度扩展场景下应用桥接模式。原创 2025-09-19 11:49:20 · 1034 阅读 · 0 评论 -
设计模式- 命令模式详解
命令模式是一种将请求封装为对象的行为型设计模式,其核心在于解耦调用者和接收者,支持请求排队、日志记录及撤销操作。文章详细介绍了命令模式的结构(命令接口、具体命令、调用者、接收者、客户端)和实现流程,包括定义命令接口、创建接收者、实现具体命令、定义调用者及客户端使用。重点分析了命令撤销/重做功能的状态管理和历史记录实现,以及宏命令的组合方式。文中还提供了Spring框架中的命令模式应用示例和常见面试问题,如模式优缺点、适用场景等,帮助读者全面理解命令模式的设计思想与实践应用。原创 2025-09-19 11:26:36 · 1033 阅读 · 0 评论 -
设计模式-观察者模式详解
本文系统介绍了观察者模式的设计原理与实现方法。首先定义了观察者模式的基本概念,它是一种一对多的依赖关系,允许主题对象状态变化时自动通知所有观察者。文章详细阐述了模式结构,包括主题、具体主题、观察者和具体观察者四个核心角色,并通过代码示例展示了完整的实现流程。重点分析了观察者模式中的三个关键问题:内存泄漏的预防方案、线程安全的实现方式以及观察者执行顺序的控制策略,分别给出了具体的解决方案和优化代码。全文通过流程图和代码示例,清晰呈现了观察者模式的核心思想和技术实现细节。原创 2025-09-19 10:47:19 · 626 阅读 · 0 评论 -
设计模式详解:单例模式、工厂方法模式、抽象工厂模式
本文详解三种常见设计模式:单例模式确保一个类仅有一个实例,提供全局访问点,实现方式包括饿汉式、懒汉式、双重检查锁定、静态内部类和枚举,重点解决线程安全、序列化和反射攻击问题;工厂方法模式定义创建对象的接口,让子类决定实例化哪个类;抽象工厂模式创建相关或依赖对象家族,无需指定具体类。文章对比了三种模式的适用场景,并总结了面试高频考点,如单例模式的线程安全实现、Spring中的单例应用等。原创 2025-09-19 09:59:51 · 1387 阅读 · 0 评论 -
设计模式-外观模式详解
外观模式是一种结构型设计模式,为复杂子系统提供统一的高层接口,简化客户端调用。核心思想是通过Facade类封装多个子系统接口,降低系统耦合度。适用场景包括:简化复杂系统接口、解耦客户端与子系统、分层构建系统等。模式结构包含Facade外观类、SubSystem子系统和Client客户端三类角色。外观模式可分为基本实现和抽象实现两种形式,前者直接封装子系统,后者通过抽象类提供扩展性。设计流程包括识别复杂子系统、设计外观接口、实现外观类和客户端调用四个步骤。原创 2025-09-18 17:25:54 · 1056 阅读 · 0 评论 -
设计模式-代理模式详解
代理模式摘要 代理模式是一种结构型设计模式,通过代理对象控制对目标对象的访问,在不修改目标对象的情况下增强其功能。分为静态代理和动态代理两种实现方式: 静态代理:手动创建实现相同接口的代理类,在方法调用前后添加额外处理逻辑 动态代理: JDK动态代理:基于接口,通过Proxy类和InvocationHandler接口实现 CGLIB动态代理:基于继承,适用于无接口的类 核心应用场景包括远程调用、性能监控、权限控制等。静态代理实现简单但灵活性差,动态代理更灵活但性能略低。原创 2025-09-18 11:54:10 · 1241 阅读 · 0 评论 -
设计模式-策略模式深度分析
实际应用中,策略模式可用于支付系统(不同支付方式)、数据压缩(多种压缩算法)、日志记录(多种输出方式)、排序算法选择和数据验证等场景。通过策略接口统一调用方式,上下文类负责策略的选择和执行。重难点在于策略选择机制的设计,需要避免硬编码,支持动态选择和回退机制。解决方案通常包括策略选择器接口和基于配置的选择器实现,根据运行时条件灵活选择合适策略。原创 2025-09-10 15:41:05 · 767 阅读 · 0 评论 -
牛刀小试之设计模式
设计模式摘要 设计模式是软件设计中反复出现问题的标准化解决方案,由GoF提出23种经典模式。按目的分为三类:创建型模式(如单例、工厂方法)解决对象创建问题;结构型模式(如适配器、装饰器)处理类和对象组合;行为型模式(如观察者、策略)管理对象间通信。设计模式能提高代码可读性、可维护性和复用性,促进团队协作。实际应用中需根据场景选择,如单例模式适合全局资源管理,工厂方法处理对象创建不确定性,建造者模式构建复杂对象。理解模式核心思想比死记硬背更重要,灵活运用可显著提升软件质量。原创 2025-09-09 16:14:36 · 863 阅读 · 0 评论 -
设计模式-模板模式详解
模板模式是一种行为型设计模式,它定义算法骨架并将具体步骤延迟到子类实现。该模式通过抽象类定义模板方法控制流程,子类实现具体步骤,适用于算法框架固定、需要代码复用和扩展的场景。Spring框架广泛应用模板模式,如JdbcTemplate处理数据库操作流程,RestTemplate定义HTTP请求流程,AbstractController控制请求处理流程等。设计时需注意方法访问控制、钩子方法设计和抽象层次,避免过度设计或违反开闭原则。模板模式实现了父类控制流程、子类灵活扩展的机制,是框架设计中常用的核心模式。原创 2025-09-14 10:53:18 · 1225 阅读 · 0 评论 -
设计模式-装饰器模式详解
装饰器模式是一种结构型设计模式,允许在不改变对象结构的情况下动态扩展功能。其核心是通过创建包装对象来添加职责,遵循"组合优于继承"原则。该模式包含抽象组件、具体组件、抽象装饰器和具体装饰器四个角色,典型应用包括Java I/O流处理、缓存功能增强等场景。装饰器模式支持运行时功能扩展,避免了继承带来的类爆炸问题,同时保持了对象接口的一致性。示例展示了如何通过装饰器为数据源添加加密和压缩功能,以及为服务接口增加缓存能力。原创 2025-09-14 12:23:42 · 844 阅读 · 0 评论 -
设计模式-适配器模式详解
适配器模式是一种结构型设计模式,用于解决接口不兼容问题。它通过包装现有类,将其接口转换为客户端期望的接口,从而让原本不兼容的类能够协同工作。原创 2025-09-14 11:07:43 · 1362 阅读 · 0 评论 -
设计模式-模板方法模式详解(2)
本文摘要: 模板方法模式是一种行为型设计模式,通过定义算法骨架并将可变步骤延迟到子类实现,实现代码复用和扩展性。核心结构包括抽象类(定义模板方法和抽象方法)、具体类(实现抽象方法)以及可选的钩子方法。该模式适用于多个类有相同算法结构但实现不同的场景,能有效控制子类扩展范围。文中详细介绍了模式定义、核心思想、适用场景、类图结构、分类(基本型和带钩子型)以及设计流程,包括识别算法结构、提取抽象类和实现具体类三步骤,并提供了Java代码示例说明典型实现方式。原创 2025-09-18 15:46:02 · 1131 阅读 · 0 评论
分享