
设计模式
文章平均质量分 91
yingjuxia.com
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
适配器模式
适配器模式是一种结构型设计模式,用于转换不兼容接口,使不同类能协同工作。它通过创建适配器类实现目标接口并封装被适配者功能,分为类适配器(继承)和对象适配器(组合)两种实现方式。适配器模式优点包括接口兼容、代码复用和灵活性,适用于遗留系统集成、第三方库适配等场景。示例展示了电源适配器(220V转5V)的Java实现,以及Objective-C和JavaScript的适配器模式应用。原创 2025-09-20 10:13:17 · 1145 阅读 · 0 评论 -
工厂模式讲解
工厂模式是一种创建型设计模式,通过封装对象创建过程来提高代码灵活性和可维护性。主要分为三种类型:简单工厂模式(通过参数创建对象,但违反开闭原则)、工厂方法模式(为每个产品定义专属工厂,符合开闭原则)和抽象工厂模式(创建产品家族,保持一致性)。文中通过Java示例展示了三种模式的实现方式,并分析了各自的优缺点。工厂模式适用于需要动态创建对象、支持扩展或维护产品一致性的场景。原创 2025-09-20 09:58:35 · 722 阅读 · 0 评论 -
单例模式讲解
单例模式确保类仅有一个实例,并提供全局访问点。常见实现包括饿汉式(线程安全但非延迟加载)、懒汉式(需同步锁)、双重检查锁(高效线程安全)、静态内部类(推荐)和枚举单例(防反射/序列化破坏)。适用于配置管理、数据库连接池等场景,但需注意线程安全与全局状态问题。现代框架(如Spring)通常通过容器管理单例。原创 2025-09-20 09:56:17 · 997 阅读 · 0 评论 -
观察者模式
观察者模式是一种行为型设计模式,用于在对象间建立一对多依赖关系。当主体对象状态变化时,所有观察者会自动收到通知并更新。该模式核心包括Subject(维护观察者列表和通知机制)和Observer(定义更新接口),适用于前端事件监听、后端消息队列等场景。优点是解耦性强、灵活性高,但需注意内存泄漏和性能问题。2025年趋势显示其在微服务架构和AI集成中的应用将更加广泛。最佳实践包括及时取消订阅、异步处理和错误捕获等。原创 2025-09-17 11:11:05 · 766 阅读 · 0 评论 -
传输对象模式
传输对象模式(DTO)是一种企业级设计模式,用于在客户端和服务器间高效传递数据。它通过将多个属性封装到简单对象中,减少网络调用次数,提高分布式系统性能。模式包含传输对象、业务对象、客户端和服务端四个角色,适用于Java EE、微服务等场景。优点是减少网络开销、简化接口,但可能增加开发工作量。使用时需注意与DAO模式结合、保持精简设计、支持序列化等要点,在保证数据完整性的同时降低系统耦合度。原创 2025-08-13 18:20:04 · 956 阅读 · 0 评论 -
服务定位器模式
服务定位器模式是一种企业级设计模式,用于集中管理和查找服务或组件,隐藏服务创建的复杂性。该模式通过服务定位器提供对服务的访问,减少客户端与服务实现的耦合,适用于分布式系统或需要动态获取服务的场景。其核心组成包括服务接口、具体服务实现、服务定位器、客户端和服务注册表。服务定位器通过缓存机制提高性能,同时简化服务访问流程。该模式的优点在于解耦、复用性高和集中管理,但也存在可能成为单点故障、缓存管理复杂等缺点。在现代依赖注入框架盛行的背景下,服务定位器模式更适合传统企业应用或特定服务访问场景。使用时需注意缓存管理原创 2025-08-13 18:17:44 · 1018 阅读 · 0 评论 -
拦截过滤器模式
拦截过滤器模式是一种企业级设计模式,用于在请求/响应处理流程中插入预处理和后处理逻辑。该模式通过可插拔的过滤器链(包含认证、日志等组件)对请求进行拦截处理,最后交由目标处理器完成业务逻辑。其核心优势在于模块化、灵活性和解耦性,常见于Web应用的身份验证、日志记录等场景。实现时需注意过滤器顺序、性能优化及与责任链模式的区别。典型应用包括Java EE的Servlet过滤器和Spring Security框架。原创 2025-08-13 18:16:18 · 982 阅读 · 0 评论 -
前端控制器模式
摘要: 前端控制器模式是一种集中处理客户端请求的企业级设计模式,通过单一入口(前端控制器)统一管理请求分发、认证、日志等操作。其核心组件包括前端控制器(分发请求)、处理程序(执行业务逻辑)、视图(渲染响应)和客户端。该模式简化了请求流程,提升系统一致性和可维护性,适用于Java EE框架(如Spring MVC)。优点包括集中控制、简化客户端代码,但可能因设计不当导致性能瓶颈或臃肿。典型应用场景包括Web请求统一处理、MVC架构的控制器层,需注意职责分离和性能优化。原创 2025-08-13 18:14:34 · 936 阅读 · 0 评论 -
数据访问对象模式
DAO模式是一种通过分离业务逻辑与数据访问逻辑来提升系统可维护性和可移植性的设计模式。它定义标准数据操作接口(DAO接口),由具体实现类完成底层数据源交互,使用DTO对象传递数据。业务对象通过DAO接口访问数据,无需关心存储细节。这种模式适用于企业级应用,能有效降低代码耦合度,便于数据源切换和功能扩展。示例展示了Java中学生信息管理的DAO实现,包括CRUD操作和数据传输过程。原创 2025-08-13 18:13:08 · 706 阅读 · 0 评论 -
组合实体模式
组合实体模式是一种企业级设计模式,用于管理复杂对象间的依赖关系和数据一致性。它将多个相关对象组合成单一实体,简化客户端交互,减少数据传输复杂性。该模式包含组合实体、粗粒度对象、依赖对象和客户端四个角色,通过粗粒度对象封装细粒度操作,确保数据同步。适用于EJB实体、订单系统等需要管理复杂业务对象的场景。优点是简化交互、确保一致性,但可能增加设计复杂性。使用时需平衡粗/细粒度,避免接口过于庞大。原创 2025-08-13 18:11:55 · 561 阅读 · 0 评论 -
业务代表模式
业务代表模式是一种结构型设计模式,用于解耦客户端与业务服务的直接交互。它通过代理层隐藏服务查找、远程调用等复杂性,简化客户端代码。该模式包含客户端、业务代表、服务定位器和业务服务四个角色,常用于分布式系统(如J2EE)。其优点是降低耦合、提高灵活性,但可能增加系统复杂度。适用于需要动态切换服务实现或处理跨层异常的企业级应用。原创 2025-08-13 18:10:45 · 517 阅读 · 0 评论 -
MVC 模式
MVC模式是一种经典的软件架构模式,将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个核心组件。模型负责数据处理和业务逻辑,视图负责用户界面展示,控制器协调用户输入并更新模型和视图。该模式通过分离关注点提高了代码的可维护性、可扩展性和复用性,广泛应用于Web开发、桌面应用和移动应用。虽然会增加系统复杂性,但其模块化设计使其特别适合需要多界面展示同一数据或处理复杂交互的场景。常见的MVC变种包括MVP和MVVM模式。原创 2025-08-13 18:09:10 · 541 阅读 · 0 评论 -
访问者模式
访问者模式是一种行为型设计模式,用于将数据结构与操作分离,允许在不修改元素类的情况下添加新操作。该模式包含五个核心组件:访问者接口声明visit方法、具体访问者实现操作逻辑、元素接口定义accept方法、具体元素实现accept方法,以及对象结构管理元素集合。典型应用场景包括文件处理(如压缩/加密不同类型文件)和编译器语法树分析。其优势在于符合开闭原则,便于扩展新操作,但缺点是新元素类型会破坏访问者接口。该模式通过双分派机制实现动态方法调用,适用于元素类型稳定但操作频繁变化的场景。原创 2025-08-13 18:07:53 · 712 阅读 · 0 评论 -
模板模式讲解
模板模式是一种行为型设计模式,通过抽象类定义算法骨架,将可变步骤延迟到子类实现。它包含抽象模板(定义模板方法和抽象步骤)和具体模板(实现具体步骤)两个核心角色。该模式适用于需要固定流程但部分步骤可自定义的场景(如饮料制作、数据处理等),具有代码复用、行为一致等优点,但也可能导致类数量增加。与策略模式不同,模板模式通过继承实现流程固定,强调算法结构的一致性。原创 2025-08-13 18:06:03 · 801 阅读 · 0 评论 -
策略模式讲解
策略模式是一种行为型设计模式,它通过将算法封装到独立的策略类中,使客户端能动态切换不同策略。该模式包含上下文、策略接口和具体策略三个核心角色,通过解耦算法实现和行为调用,提供运行时灵活切换策略的能力。典型应用场景包括支付系统、排序算法等需要根据不同条件选择不同实现的业务。策略模式能有效减少条件语句,提高代码可维护性,但会增加类的数量。其核心优势在于遵循开闭原则,支持算法扩展而不修改原有代码。原创 2025-08-13 18:04:25 · 704 阅读 · 0 评论 -
空对象模式
空对象模式是一种行为型设计模式,通过提供无操作的空对象替代null引用,避免空指针检查和条件判断。该模式包含抽象接口、具体对象、空对象和客户端四个角色,空对象实现与真实对象相同的接口但提供默认行为。优点包括减少代码复杂度、提高健壮性,缺点可能增加系统复杂性。适用于需要避免空检查或提供默认行为的场景,如数据库查询、日志系统等。使用时需注意空对象行为的合理设计,避免掩盖潜在问题。原创 2025-08-13 18:03:10 · 498 阅读 · 0 评论 -
状态模式讲解
状态模式是一种行为型设计模式,允许对象在内部状态改变时动态调整行为。其核心结构包括Context(上下文)、State(状态接口)和具体状态类,通过将状态行为封装到独立类中,实现状态切换和逻辑分离。模式优点包括代码清晰、扩展性强,适用于订单流程、游戏角色等状态驱动场景。Java示例展示了电灯开关的状态转换,验证了模式的有效性。状态模式能有效减少条件语句,提高系统可维护性。原创 2025-08-13 18:01:39 · 674 阅读 · 0 评论 -
观察者模式
观察者模式是一种行为型设计模式,用于建立对象间的一对多依赖关系。当主题(Subject)状态变化时,会自动通知所有注册的观察者(Observer)。该模式包含主题、观察者、具体主题和具体观察者四个角色,常用于事件驱动系统如GUI框架和发布-订阅系统。其优点是松耦合、动态管理观察者,但可能存在性能问题。代码示例展示了新闻发布系统的实现,主题维护观察者列表并在状态变化时调用观察者的update方法。该模式适合需要动态通知的场景,但需注意通知效率和内存管理。原创 2025-08-13 17:59:47 · 597 阅读 · 0 评论 -
备忘录模式
备忘录模式是一种行为型设计模式,用于在不破坏对象封装性的前提下保存和恢复对象状态。它包含三个核心角色:发起人(管理状态)、备忘录(存储状态)和管理者(保存备忘录)。该模式适用于需要撤销/恢复功能的场景,如文本编辑器撤销、游戏存档等,既能保护对象封装性,又能实现状态回溯。其优点在于状态恢复机制完善,缺点是可能消耗较多内存。实际应用中需注意控制备忘录访问权限,并可通过列表管理多个状态点。原创 2025-08-13 17:58:27 · 244 阅读 · 0 评论 -
迭代器模式
迭代器模式是一种行为型设计模式,用于顺序访问聚合对象中的元素而不暴露其内部结构。该模式将遍历逻辑从集合对象中分离,通过定义统一的迭代器接口(如hasNext()和next()方法)实现解耦,提高代码灵活性。典型应用包括集合遍历、复杂数据结构操作、数据库查询等场景。文章通过Java示例展示了如何实现自定义迭代器,并对比了Java内置迭代器的使用,同时介绍了在Servlet环境中遍历请求参数的实际应用。迭代器模式的优点在于简化客户端代码、支持多种遍历方式,但可能增加系统复杂度。原创 2025-08-10 11:43:24 · 903 阅读 · 0 评论 -
解释器模式讲解
解释器模式是一种行为型设计模式,用于为特定语言定义解释器来解析和执行表达式。它通过构建抽象语法树(AST)来递归解释输入,适用于处理简单语法如数学运算、查询语言等。核心角色包括抽象表达式、终结符/非终结符表达式和上下文。优点是扩展性好,适合领域特定语言;缺点是复杂度高,仅适用于简单语法规则。典型应用包括表达式计算、脚本解析和配置处理等场景。原创 2025-08-10 11:41:59 · 664 阅读 · 0 评论 -
命令模式讲解
命令模式中文摘要(150字) 命令模式是一种行为型设计模式,将请求封装为对象,解耦请求发起者与执行者。核心包含抽象命令(定义执行/撤销接口)、具体命令(绑定执行者)、调用者(触发命令)和执行者(实现业务逻辑)。典型应用包括操作撤销(如文本编辑器)、事务管理、任务排队等,支持灵活扩展。示例展示了Java实现的复制/撤销功能,以及Servlet场景下的用户操作管理。优点在于低耦合、易扩展,但可能增加代码复杂度。适用于需要封装操作并支持撤销/日志的场景。原创 2025-08-10 11:40:44 · 980 阅读 · 0 评论 -
责任链模式
责任链模式是一种行为型设计模式,通过构建处理者链将请求的发送者和接收者解耦。核心思想是让请求沿链传递,直到被某个处理者处理或到达链尾。该模式适用于日志分级、权限验证等工作流场景,支持动态调整处理顺序。示例展示了日志系统的实现,不同级别的日志由对应处理者按链式顺序处理。Servlet过滤器也是责任链的典型应用。优点在于解耦和灵活性,但可能因链过长影响性能。原创 2025-08-10 11:39:22 · 613 阅读 · 0 评论 -
代理模式讲解
代理模式是一种结构型设计模式,通过引入代理对象来控制对目标对象的访问,在不修改目标对象的情况下实现功能扩展。它包含抽象主题、真实主题和代理三个角色,代理对象持有真实主题的引用并添加额外逻辑(如权限控制、日志记录等)。代理模式适用于权限管理、延迟加载、日志记录等场景,分为静态代理和动态代理两种实现方式。静态代理在编译时确定,而动态代理(如Java的Proxy类)在运行时生成,更加灵活。该模式在不改变原有代码的基础上增强了系统功能,提高了代码的可维护性和扩展性。原创 2025-08-10 11:37:52 · 1004 阅读 · 0 评论 -
享元模式讲解
享元模式简介 享元模式(Flyweight Pattern)是一种结构型设计模式,主要用于优化内存使用和性能提升。它通过共享对象来减少系统中相似对象的数量,从而降低内存消耗。该模式将对象状态分为内在状态(共享、不变)和外在状态(不共享、变化),适用于需要创建大量相似对象的场景,如文本编辑器中的字符渲染、游戏中的重复元素等。 享元模式包含四个核心角色:抽象享元定义接口,具体享元实现共享逻辑,享元工厂管理对象池,客户端负责使用享元并传递外在状态。通过共享内在状态的对象,可以显著减少内存占用和提高系统性能,特别适原创 2025-08-10 11:36:34 · 867 阅读 · 0 评论 -
外观模式讲解
外观模式是一种结构型设计模式,通过提供简化的统一接口来隐藏复杂子系统的内部实现。它由外观类(充当"门面")和多个子系统类组成,客户端只需与外观类交互即可完成复杂操作,降低了系统耦合度。文章通过家庭影院系统示例(灯光、投影仪、音响的协调控制)和Servlet用户注册案例,展示了外观模式如何封装多个子系统调用,简化客户端代码。该模式适用于需要简化复杂系统、集成多个模块或实现分层架构的场景,能提高代码可维护性,但可能增加额外抽象层。原创 2025-08-10 11:35:10 · 675 阅读 · 0 评论 -
装饰器模式
装饰器模式是一种结构型设计模式,允许在不改变对象结构的情况下动态添加功能。它通过创建包装类(装饰器)来扩展目标对象的功能,解决了继承导致的子类爆炸问题。主要包含抽象组件、具体组件、装饰器、具体装饰器等角色,具有动态扩展、透明性等特点。典型应用包括UI组件增强、日志记录、Servlet请求/响应处理等。示例展示了如何为咖啡添加配料,以及如何在Servlet中装饰HTTP响应添加日志功能,体现了该模式灵活扩展的优势。原创 2025-08-10 11:33:29 · 609 阅读 · 0 评论 -
组合模式讲解
组合模式是一种结构型设计模式,通过将对象组织成树形结构来表示"部分-整体"关系,使客户端能够统一处理单个对象和组合对象。该模式包含抽象组件、叶子节点和组合节点三个核心角色,适用于文件系统、菜单导航等层次结构场景。示例展示了Java实现文件系统的树形结构,并说明了在Servlet中生成树形菜单JSON响应的应用。组合模式提高了代码复用性,简化了复杂层次结构的操作,但可能因透明性要求导致叶子节点需要实现不必要的方法。原创 2025-08-10 11:32:09 · 909 阅读 · 0 评论 -
过滤器模式
过滤器模式是一种行为型设计模式,用于从对象集合中筛选符合条件的子集。它通过定义独立的标准接口(Criteria),将过滤逻辑封装为可复用的过滤器类,支持单一或多重条件组合(如"与"、"或"操作)。该模式解耦了业务逻辑与过滤规则,典型应用包括用户数据筛选(如年龄/性别)、Java EE中的Servlet过滤器等。核心优势在于灵活性和可扩展性,但可能增加小型项目的复杂度。示例展示了如何通过AgeCriteria、GenderCriteria等实现类对Person列表进行多原创 2025-08-10 11:30:51 · 765 阅读 · 0 评论 -
桥接模式讲解
摘要 桥接模式是一种结构型设计模式,通过将抽象部分与实现部分分离,使两者可独立变化,从而降低耦合度。其核心是通过组合(而非继承)连接抽象与实现,适用于多维度变化的场景(如形状与绘制方式)。角色包括抽象类、扩展抽象类、实现接口和具体实现类。示例展示了形状(圆形/方形)与绘制方式(光栅/矢量)的桥接实现,并扩展至Servlet请求处理与响应格式的应用。桥接模式提高了系统灵活性和扩展性,但可能增加代码复杂度。原创 2025-08-10 11:28:37 · 890 阅读 · 0 评论 -
桥接模式讲解
摘要 桥接模式是一种结构型设计模式,通过将抽象部分与实现部分分离,使两者可独立变化,从而降低耦合度。其核心是通过组合(而非继承)连接抽象与实现,适用于多维度变化的场景(如形状与绘制方式)。角色包括抽象类、扩展抽象类、实现接口和具体实现类。示例展示了形状(圆形/方形)与绘制方式(光栅/矢量)的桥接实现,并扩展至Servlet请求处理与响应格式的应用。桥接模式提高了系统灵活性和扩展性,但可能增加代码复杂度。原创 2025-08-10 11:26:46 · 1041 阅读 · 0 评论 -
适配器模式
适配器模式是一种结构型设计模式,用于将不兼容的接口转换为客户端期望的接口。它通过创建适配器类作为"桥梁",在不修改原有类的情况下实现接口转换。适配器模式分为类适配器(通过继承)和对象适配器(通过组合,更常用)。其优点包括复用现有代码、解耦客户端与被适配者,但也可能增加系统复杂性。典型应用场景包括系统集成、接口统一和复用遗留代码等。在实现时需注意编码问题,如处理中文时确保使用UTF-8编码。原创 2025-08-10 11:24:56 · 699 阅读 · 0 评论 -
原型模式讲解
原型模式是一种创建型设计模式,通过复制现有对象来创建新对象,避免重复初始化成本。它包含抽象原型(定义克隆接口)、具体原型(实现克隆方法)和客户端三个角色。Java中可通过实现Cloneable接口实现原型模式,适用于创建高成本对象或大量相似对象的场景。代码示例展示了如何克隆汽车对象(包含深拷贝引擎对象),并分析了在Servlet等场景中的应用。原型模式能提高性能,但需注意深拷贝/浅拷贝的选择。原创 2025-08-10 11:23:47 · 792 阅读 · 0 评论 -
建造者模式
建造者模式摘要 建造者模式是一种创建型设计模式,用于分步构建复杂对象,将对象构造过程与表示分离。它通过链式调用设置属性,最后通过build()方法创建目标对象,适用于具有多个可选配置的复杂对象构造。主要角色包括产品、抽象建造者、具体建造者和指挥者(可选)。该模式提高了代码可读性和灵活性,常见于配置对象构建、链式调用等场景。示例展示了如何用建造者模式构建计算机对象,并演示了在Servlet中构建JSON响应的应用。原创 2025-08-10 11:22:30 · 869 阅读 · 0 评论