- 博客(91)
- 收藏
- 关注
原创 Java访问者模式详解
访问者模式(Visitor Pattern)表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。
2025-04-03 10:57:44
117
原创 Java备忘录模式详解
需要提供撤销/重做功能需要保存对象历史状态需要实现事务回滚机制需要保存系统快照文本/图像编辑软件游戏存档系统数据库事务管理系统配置管理工作流状态保存正确使用备忘录模式可以实现灵活的状态管理,但需要注意内存和性能方面的考量。
2025-04-03 09:30:56
412
原创 Java中介者模式详解
对象间存在复杂的网状引用关系需要集中控制多个对象间的交互交互逻辑需要复用或统一管理系统需要动态调整交互方式GUI框架中的组件交互聊天应用中的消息传递分布式系统的协调服务工作流引擎游戏中的角色交互正确使用中介者模式可以简化系统架构,但需要注意避免中介者过度复杂化。
2025-04-03 09:29:57
364
原创 Java迭代器模式详解
/ 树节点// 创建深度优先迭代器// 创建广度优先迭代器// 深度优先迭代器return!i >= 0;i--) {需要统一遍历不同结构的集合需要支持多种遍历方式需要隐藏集合内部实现需要延迟加载或分批处理数据Java集合框架(Collection.iterator())数据库结果集遍历树形结构遍历文件系统遍历分页数据加载正确使用迭代器模式可以提高代码的复用性和灵活性,但对于简单遍历需求,直接使用for循环可能更简洁。
2025-04-03 09:27:16
265
原创 Java迭代器模式详解
/ 树节点// 创建深度优先迭代器// 创建广度优先迭代器// 深度优先迭代器return!i >= 0;i--) {需要统一遍历不同结构的集合需要支持多种遍历方式需要隐藏集合内部实现需要延迟加载或分批处理数据Java集合框架(Collection.iterator())数据库结果集遍历树形结构遍历文件系统遍历分页数据加载正确使用迭代器模式可以提高代码的复用性和灵活性,但对于简单遍历需求,直接使用for循环可能更简洁。
2025-04-03 09:25:11
276
原创 Java解释器模式详解
需要解释执行特定语法规则的场景简单语言或文法规则的实现需要频繁扩展语法规则的场景业务规则需要动态配置的情况规则引擎实现SQL条件解析数学公式计算正则表达式处理金融交易规则验证正确使用解释器模式可以提高系统的灵活性和可扩展性,但对于复杂语言解析,建议使用专门的解析器生成工具如ANTLR等。
2025-04-03 09:20:35
402
原创 Java命令模式详解
需要将请求调用者与执行者解耦的场景需要支持撤销/重做功能的系统需要实现事务或原子操作的场景需要排队或延迟执行请求的场景GUI事件处理(如按钮点击)事务系统宏录制功能任务调度系统智能家居控制正确使用命令模式可以提高系统的灵活性和可扩展性,但需要注意不要过度使用,对于简单操作直接调用可能更合适。
2025-04-03 09:19:19
268
原创 Java 责任链模式 详解
有多个对象可以处理同一请求需要动态指定处理流程需要解耦请求发送者和接收者处理流程可能变化的情况Web框架的过滤器链审批工作流系统异常处理系统事件处理管道中间件设计正确使用责任链模式可以提高系统的灵活性和可扩展性,但需要注意控制处理链的复杂度,避免性能问题。
2025-04-02 18:33:22
431
原创 Java 代理模式 详解
需要控制对复杂或敏感对象的访问需要为对象添加额外功能而不修改其代码需要实现延迟加载或远程访问需要添加访问日志、监控等功能RPC框架(如Dubbo)Spring AOP实现ORM框架(如Hibernate延迟加载)安全控制框架缓存实现正确使用代理模式可以提高系统的安全性和灵活性,但需要注意不要过度使用,以免增加系统复杂性。
2025-04-02 18:31:21
479
原创 Java 享元模式 详解
系统需要创建大量相似对象对象的大部分状态可以外部化内存占用是系统瓶颈需要集中管理共享资源文本/图形编辑器游戏开发(粒子、角色等)数据库连接池浏览器DOM节点管理正确使用享元模式可以显著降低内存消耗,但需要注意不要过早优化,应在性能分析确认内存是瓶颈后再考虑使用此模式。
2025-04-02 18:29:18
316
原创 Java外观模式详解
复杂子系统需要简单入口需要解耦客户端与子系统为分层系统提供统一入口遗留系统包装和重构框架设计API网关服务层封装复杂流程整合正确使用外观模式可以显著提高系统的易用性和可维护性,但需要注意不要过度封装,以免限制系统的灵活性。
2025-04-02 18:26:56
465
原创 Java装饰器模式详解
需要动态/透明地添加或撤销功能不适合使用子类扩展的情况需要组合多个独立扩展功能系统需要运行时添加功能Java I/O流体系Web中间件开发GUI组件装饰权限控制/日志记录等横切关注点正确使用装饰器模式可以提高系统的灵活性和可扩展性,但需要注意不要过度使用,以免增加系统复杂性。
2025-04-02 18:25:21
285
原创 Java 组合模式 详解
表示对象的部分-整体层次结构希望客户端忽略组合对象与单个对象的不同需要处理递归或嵌套结构的场景文件/目录系统GUI组件系统组织结构表示菜单系统XML/JSON文档处理正确使用组合模式可以简化复杂结构的处理,但需要注意不要过度使用,在确实存在树形结构需求时才采用此模式。
2025-04-02 18:23:37
288
原创 Java 桥接模式 详解
抽象和实现都需要扩展的场景需要避免多层继承的情况平台无关的架构设计运行时切换实现的需求GUI框架开发驱动程序开发跨平台应用数据库访问层正确使用桥接模式可以提高系统的灵活性和可维护性,但需要注意不要过度设计,在确实存在多个独立变化维度时才使用此模式。
2025-04-02 18:21:47
301
原创 Java 适配器模式 详解
集成遗留系统使用第三方库系统升级过渡期设备驱动开发企业系统集成框架扩展开发跨平台开发微服务接口适配正确使用适配器模式可以提高代码的复用性和系统的灵活性,但需要注意不要滥用,以免增加系统复杂性。
2025-04-02 18:20:26
393
原创 Java 原型模式 详解
对象创建成本高的场景需要动态配置对象的场景需要隔离对象创建细节的场景游戏开发(角色、道具复制)配置管理(配置模板复制)缓存实现(原型缓存)撤销/重做功能(状态保存与恢复)正确使用原型模式可以显著提高系统性能,但需要注意深拷贝/浅拷贝的选择以及clone方法的正确实现。
2025-04-02 18:18:26
521
原创 Java建造者模式详解
需要创建包含多个部件的复杂对象对象有多个变体或配置选项需要创建不可变对象希望提供清晰的创建API配置对象的构建DTO对象的创建测试数据的准备复杂领域模型的实例化正确使用建造者模式可以显著提高代码的可读性和可维护性,是Java开发者工具箱中的重要设计模式。
2025-04-02 18:15:45
417
原创 Java工厂模式详解
工厂模式是面向对象设计中最重要的模式之一,它通过将对象的创建与使用分离,提高了代码的灵活性和可维护性。根据业务复杂度选择合适的工厂模式变体在框架开发中广泛使用(如Spring的BeanFactory)与模板方法、策略等模式可以很好结合避免在简单场景中过度使用正确使用工厂模式可以显著提高代码的可维护性和扩展性,是每个Java开发者必须掌握的核心设计模式。
2025-04-02 18:11:47
640
原创 MySQL 常见面试问题总结
MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现在属于Oracle公司。✅ 开源免费(社区版)⚡ 性能高、运行速度快👥 支持多用户、多线程🖥️ 跨平台支持(Windows、Linux、Mac等)💻 支持多种编程语言接口📊 使用标准的SQL数据语言🔄 提供事务支持和外键约束🏢 支持大型数据库🛠️ 提供多种存储引擎选择🔒 良好的安全性和连接性事务定义事务是一组原子性的SQL查询,要么全部执行成功,要么全部失败回滚。
2025-03-26 11:22:45
733
原创 寻找重复数 - LeetCode 287 题解笔记
给定一个包含 n + 1 个整数的数组 nums,其数字都在 [1, n] 范围内(包括 1 和 n),已知至少存在一个重复的整数。假设 nums 只有一个重复的整数,返回这个重复的数。
2025-03-25 14:55:27
313
原创 Java并发编程面试代码练习
本文介绍了线程安全的单例模式以及两种实现生产者消费者问题的方法。第一种方法使用和Condition实现,第二种方法使用实现。两种方法各有优缺点,选择哪种方法取决于具体的应用场景和需求。
2025-03-20 19:16:54
324
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人