行为型设计模式
文章平均质量分 98
行为型设计模式
冰茶_
专注于C#技术领域的软件工程师,同时也在探索AI编码方面
博客中的所有相关资源如果无法下载都可以私信博主免费下载
愿未来如晨曦般灿烂,人生如繁星般璀璨
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深入解析解释器模式:语言解析的优雅实现
解释器模式是一种行为型设计模式,用于定义语言语法并解释执行特定表达式。其核心是通过抽象表达式、终结符表达式和非终结符表达式构建语法树,配合上下文对象实现语言的解析。该模式适用于需要频繁解析语法规则的场景,如SQL解析、正则表达式等。文中以数学表达式解析器和日期格式解析器为例,展示了如何通过构建表达式类和上下文类来实现解释器功能,使复杂语法解析变得模块化和可扩展。原创 2025-06-15 07:00:00 · 770 阅读 · 0 评论 -
备忘录模式:文本编辑器撤销功能实现
备忘录模式摘要 备忘录模式是一种行为型设计模式,它允许在不破坏对象封装性的前提下保存和恢复对象内部状态。该模式包含三个核心角色:发起人(保存状态的对象)、备忘录(保存状态)、看护者(管理备忘录)。主要应用于撤销/重做、状态恢复等场景。示例展示了文本编辑器如何保存编辑状态(内容、光标位置)到备忘录,并支持从备忘录恢复状态。该模式实现了状态管理的解耦,保护了对象内部细节的封装性,同时提供了灵活的状态恢复机制。原创 2025-06-14 08:00:00 · 920 阅读 · 0 评论 -
访问者模式:解耦算法与数据结构的利器
访问者模式是一种行为型设计模式,它分离数据结构和操作,通过双分派机制在不修改元素类的前提下添加新操作。该模式包含访问者接口(定义对不同元素的操作)、元素接口(接受访问者)以及具体实现类。如文档处理系统示例所示,HTML导出器作为具体访问者可以处理各种文档元素(段落、图片等)而不改变元素的类结构。这种模式符合开放封闭原则,有利于系统扩展,适合在对象结构稳定但操作频繁变化的场景中使用。原创 2025-06-14 07:00:00 · 1025 阅读 · 0 评论 -
职责链模式:灵活处理请求的艺术
职责链模式是一种行为型设计模式,允许将多个对象组成处理链,请求沿链传递直到被处理。该模式避免发送者和接收者直接耦合,实现动态请求处理。 核心结构包含: 抽象处理者(Handler)定义处理接口和设置后继者方法 具体处理者(ConcreteHandler)实现处理逻辑,无法处理则转发 客户端构建处理链并发送请求 典型应用场景包括审批流程、事件处理等。文中以C#采购审批为例,展示了部门经理、副总裁、总裁和董事会组成的处理链如何根据采购金额分级处理请求。这种模式增强了系统的灵活性和可扩展性。原创 2025-06-13 08:00:00 · 1565 阅读 · 0 评论 -
策略模式实战:灵活支付方案揭秘
策略模式是一种行为型设计模式,它定义了一系列算法,将每个算法封装到独立的类中,使它们可以互相替换。该模式通过将算法实现与使用代码分离,消除了大量条件判断,使算法变化独立于客户端。主要包含上下文(Context)、策略接口(Strategy)和具体策略(ConcreteStrategy)三个核心组件。文中以支付场景为例展示了C#实现,包括信用卡、支付宝、微信支付等不同支付策略,通过购物车上下文统一调用,灵活切换支付方式。这种模式提高了系统的灵活性和可维护性。原创 2025-06-13 07:00:00 · 1036 阅读 · 0 评论 -
状态模式:简化复杂对象行为管理
状态模式是一种行为型设计模式,允许对象在内部状态改变时改变其行为。该模式通过将状态相关的行为封装到独立的状态类中,消除了大量条件判断语句,使状态转换更加明确。核心组件包括上下文(Context)、状态接口(State)和具体状态类(ConcreteState),上下文委托当前状态对象处理操作请求。文中以C#实现的订单状态管理系统为例,展示了新建、已确认、已取消和已发货等不同状态下的行为差异,每种状态只允许执行特定操作并控制状态转换。状态模式特别适用于对象行为依赖于其状态,且状态转换复杂的场景。原创 2025-06-12 08:00:00 · 946 阅读 · 0 评论 -
中介者模式:解耦对象交互的艺术
中介者模式定义了一个对象来封装一组对象间的交互,减少对象间的直接依赖,降低系统复杂度。本文介绍了中介者模式的结构和C#实现,包括基本实现和使用事件/委托的优化版本。该模式通过中介者协调对象间通信,将网状依赖转化为星型结构,适用于对象间交互复杂的系统,如聊天室、组件通信等场景,能有效简化对象间的耦合关系。原创 2025-06-12 07:00:00 · 996 阅读 · 0 评论 -
观察者模式:事件通知的优雅实现
观察者模式是一种行为型设计模式,定义了对象之间一对多的依赖关系,当主题对象状态变化时自动通知所有观察者。核心结构包括Subject(主题接口)、ConcreteSubject(具体主题)、Observer(观察者接口)和ConcreteObserver(具体观察者)。C#实现示例展示了天气监测系统:WeatherData作为具体主题维护观察者列表,当数据更新时通过NotifyObservers()通知注册的CurrentConditionsDisplay和StatisticsDisplay等具体观察者。该模原创 2025-06-11 08:00:00 · 2108 阅读 · 0 评论 -
深入理解迭代器模式:优雅遍历集合元素
迭代器模式是一种行为型设计模式,用于顺序访问集合对象元素而不暴露其内部结构。该模式通过分离遍历逻辑与集合管理,提高了代码的灵活性和复用性。文章介绍了迭代器模式的四个关键角色:迭代器接口、具体迭代器、聚合接口和具体聚合类,并通过C#示例展示了传统实现和使用内置IEnumerable接口的简化实现。示例创建了一个图书管理系统,其中BookShelf作为聚合类,BookShelfIterator作为迭代器,实现集合遍历。内置迭代器利用yield return简化了代码。迭代器模式适用于需要统一遍历不同集合的场景,原创 2025-06-11 07:00:00 · 1196 阅读 · 0 评论 -
命令模式:高效解耦请求与执行
命令模式是一种行为型设计模式,它将请求封装为独立对象,使请求的发送者与接收者解耦。该模式包含四个核心角色:命令接口(定义执行和撤销操作)、具体命令(实现命令接口并绑定接收者)、调用者(存储和执行命令)以及接收者(执行实际业务逻辑)。通过C#示例展示了电视机遥控器的实现,证明了命令模式可以实现操作排队、记录请求和支持撤销等功能,增强了系统的灵活性和可扩展性。原创 2025-06-10 08:00:00 · 2102 阅读 · 0 评论 -
模板方法模式:优雅定义算法骨架
模板方法模式是一种行为型设计模式,通过定义算法骨架并将具体步骤延迟到子类实现,实现了代码复用和扩展性。主要包含抽象类(定义模板方法和基本操作)和具体类(实现具体步骤)两个角色。C#示例展示了制作饮料的过程,其中钩子方法(如CustomerWantsCondiments)允许子类选择性控制流程。该模式适用于流程固定但某些步骤需灵活变化的场景,既能确保算法结构稳定,又提供了足够的扩展点。原创 2025-06-10 07:00:00 · 1090 阅读 · 0 评论
分享