设计模式
文章平均质量分 68
Gene Z
坚信「代码能跑就行」但总强迫症式优化到凌晨3点的偏执狂
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
工厂方法模式(Factory Method)
定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化延迟到子类。原创 2025-04-23 10:39:47 · 337 阅读 · 0 评论 -
访问者模式(Visitor)
/ 元素接口// 具体元素:段落set;// 具体元素:图片set;// 具体元素:表格set;// 访问者接口// HTML 导出访问者// Markdown 导出访问者!");原创 2025-04-22 15:19:02 · 476 阅读 · 0 评论 -
模板方法模式(Template Method)
模板方法模式是一种行为型设计模式,它在抽象类中定义一个算法的骨架,并将某些步骤的具体实现延迟到子类中。通过这种方式,模板方法模式允许子类在不改变算法整体结构的情况下,重新定义算法的某些特定步骤。// 模板方法:定义文档生成流程Save();// 抽象方法:子类必须实现模板方法模式通过抽象类固定算法流程,子类负责实现具体步骤。在.NET Core中,通过继承和虚方法/抽象方法实现该模式,典型应用如ASP.NET Core中间件管道。结合钩子方法可灵活控制算法中的可选步骤,增强扩展性。原创 2025-04-22 15:18:32 · 489 阅读 · 0 评论 -
策略模式(Strategy)
策略模式是一种行为型设计模式,用于定义一系列算法(或行为),将它们封装为独立的类,并使这些算法可以相互替换。模式的核心思想是通过抽象策略接口解耦具体算法与调用者,使得算法的变化独立于使用它的客户端。策略模式通过抽象算法实现、动态切换逻辑,显著提升了代码的灵活性和可维护性。在 .NET Core 中,结合依赖注入可以更优雅地管理策略对象,适合电商支付、规则引擎等需要多算法灵活切换的场景。原创 2025-04-22 09:54:13 · 481 阅读 · 0 评论 -
状态模式(State)
状态模式是一种行为设计模式,允许对象在其内部状态改变时改变其行为,使对象看起来像是修改了其类。该模式将状态相关的逻辑分散到不同的状态类中,减少条件判断,提高代码的可维护性和扩展性。原创 2025-04-22 09:53:04 · 206 阅读 · 0 评论 -
观察者模式(Observer)
观察者模式(Observer Pattern)是一种行为设计模式,允许对象(观察者)订阅另一个对象(被观察者),并在被观察者状态变化时自动接收通知。以下是详细解释及在 .NET Core 中的实现示例。通过观察者模式,你可以轻松实现松耦合的对象间通信,而 .NET Core 的内置接口进一步简化了实现过程。)作为被观察者,当温度更新时,自动通知所有注册的显示设备(如手机应用、网页仪表盘)。维护观察者列表,提供注册、移除观察者的方法,并在状态变化时通知观察者。接口,简化观察者模式的实现。原创 2025-04-22 09:52:25 · 416 阅读 · 0 评论 -
备忘录模式(Memento)
备忘录模式(Memento Pattern)是一种行为设计模式,允许在不破坏对象封装性的前提下捕获并保存对象的内部状态,以便后续可以恢复到该状态。存储 Originator 的内部状态的对象。实现一个简单的文章编辑器,支持保存当前内容状态,并能通过撤销操作恢复到之前的某个状态。通过备忘录模式,可以优雅地实现对象状态的保存与恢复机制,同时保持代码的清晰和可维护性。需要保存和恢复状态的对象。负责创建备忘录(保存当前状态)和从备忘录恢复状态。负责保存和管理备忘录的历史记录。原创 2025-04-18 18:27:31 · 515 阅读 · 0 评论 -
中介者模式(Mediator)
中介者模式(Mediator Pattern)是一种行为型设计模式,旨在减少对象之间的直接耦合,通过引入一个中介对象来协调多个对象之间的交互。中介者充当对象之间的通信中心,对象之间不再直接相互引用,而是通过中介者进行通信。中介者模式通过集中管理对象间的交互,显著降低了系统的耦合度。在.NETCore中,结合依赖注入(如)可以更灵活地管理中介者和同事对象的生命周期。适用于需要统一协调多个对象交互的场景,如UI控件交互、微服务通信、事件总线等。原创 2025-04-16 09:51:11 · 332 阅读 · 0 评论 -
迭代器模式(Iterator)
它提供一种方法顺序访问聚合对象中的各个元素,而又不暴露该对象的内部表示。该模式的核心思想是将。通过迭代器模式,你可以灵活控制集合的遍历逻辑,同时保持代码的解耦和可扩展性。以下示例演示如何实现一个自定义集合的迭代器,支持。实现聚合接口,返回与自身结构对应的迭代器实例。从聚合对象中分离,使遍历逻辑能够独立变化。可自动生成迭代器状态机,无需手动实现。实现迭代器接口,跟踪当前遍历位置。定义遍历元素所需的方法(如。定义创建迭代器的方法(如。.NET 中通常直接使用。** 迭代器接口**** 具体迭代器**原创 2025-04-16 09:50:32 · 380 阅读 · 0 评论 -
解释器模式(Interpreter)
用于定义语言的语法规则并提供解释器来解释执行这些规则。它适用于需要解析和执行特定领域语言(DSL)的场景,例如数学表达式、SQL查询、正则表达式等。)或工具(如解析器生成器 ANTLR)来实现。解释器模式适合解决核心的“解释执行”问题,但构建抽象语法树(AST)可能需要借助其他技术。实现与语法中的非终结符(由多个终结符或非终结符组成的规则)相关的解释操作。实现与语法中的终结符(不可再分的元素,如数字、变量)相关的解释操作。对于复杂文法(如四则运算的优先级和括号),需要结合其他模式(如。原创 2025-04-16 09:49:57 · 459 阅读 · 0 评论 -
命令模式(Command)
命令模式(Command Pattern)是一种行为设计模式,它将请求封装为独立对象,从而允许参数化客户端、请求排队、记录日志或支持撤销操作。以下是对命令模式的详细说明及在.NET Core中的实现示例。模拟智能家居遥控器,通过按钮控制灯的开关,并支持撤销操作。2. 实现接收者(Receiver)3. 实现具体命令(ConcreteCommand)4. 实现调用者(Invoker)5. 客户端使用支持宏命令通过组合多个命令实现批量操作:优点解耦:调用者与接收者无直接依赖。扩展原创 2025-04-16 09:48:29 · 331 阅读 · 0 评论 -
责任链模式(Chain of Responsibility)
责任链模式(Chain of Responsibility)是一种行为设计模式,允许将请求沿着处理链传递,直到有一个处理者处理该请求。每个处理者决定自己是否处理请求或传递给链中的下一个处理者。以下是一个在.NET Core中实现责任链模式的详细示例。原创 2025-04-13 15:33:57 · 514 阅读 · 0 评论 -
代理模式(Proxy)
代理模式是一种结构型设计模式,通过创建一个代理对象来控制对原始对象的访问。代理类与原始类实现相同的接口,客户端通过代理间接操作原始对象,常用于访问控制、延迟加载、日志记录等场景。代理模式通过中间层控制对象访问,是实现系统扩展性和安全性的重要工具。在.NETCore中,结合依赖注入可优雅地集成代理,实现权限控制、缓存等横切关注点。原创 2025-04-13 15:31:53 · 413 阅读 · 0 评论 -
享元模式(Flyweight)
享元模式是一种结构型设计模式,核心目标是减少内存占用和提高性能,通过共享相似对象的状态来实现。它适用于需要创建大量相似对象的场景,通过分离对象的内部状态(可共享的、不变的部分)和外部状态(不可共享的、变化的部分),避免重复存储冗余数据。原创 2025-04-13 15:30:35 · 343 阅读 · 0 评论 -
外观模式(Facade)
外观(Facade)模式是一种结构型设计模式,旨在为复杂子系统提供一个统一的简化接口,降低客户端与子系统的耦合度。假设有一个订单处理流程,包含库存检查、支付处理和邮件通知三个子系统。通过外观模式封装这些步骤,客户端只需调用外观类的一个方法即可完成下单。通过外观模式,复杂的子系统交互被封装,客户端代码更简洁,系统结构更清晰。原创 2025-04-11 18:26:52 · 997 阅读 · 0 评论 -
装饰器模式(Decorator)
装饰器模式通过组合替代继承,实现了功能的灵活扩展。在 .NET Core 中,结合依赖注入和第三方库(如 Scrutor),可以更优雅地管理装饰器的注册与使用。,允许动态地为对象添加额外功能,而无需修改其原始结构。它通过将对象包装在装饰器类的实例中来实现功能的扩展,符合。继承组件接口,并持有一个组件对象的引用(通过组合实现功能叠加)。假设有一个订单处理服务,需要动态添加日志记录和输入验证功能。继承装饰器基类,添加具体的新功能。(对扩展开放,对修改关闭)。定义对象和装饰器的共同接口。实现组件接口的基础对象。原创 2025-04-11 18:26:19 · 506 阅读 · 0 评论 -
组合模式(Composite)
组合(Composite)设计模式是一种结构型设计模式,用于将对象组合成树形结构以表示“部分-整体”的层次关系。它允许客户端以统一的方式处理单个对象和组合对象。以下是详细解析及一个 .NET Core 实现示例。通过组合模式,可以优雅地处理树形数据结构的操作,使代码更简洁、可维护性更高。原创 2025-04-11 18:25:25 · 403 阅读 · 0 评论 -
桥接模式(Bridge)
桥接模式是一种结构型设计模式,旨在将抽象部分(Abstraction)与实现部分(Implementor)分离,使它们可以独立变化。它通过组合代替继承,解决多层继承带来的类膨胀问题,同时支持多维度扩展。IRenderer// 实现化接口:渲染引擎桥接模式通过组合代替继承,将抽象和实现解耦,使系统更灵活、可扩展。在需要处理多维变化或避免类层次爆炸的场景下尤为适用。通过示例可见,形状与渲染引擎能够独立变化并自由组合,充分体现了桥接模式的核心价值。原创 2025-04-11 18:24:54 · 414 阅读 · 0 评论 -
适配器模式(Adapter)
适配器模式是一种结构型设计模式,用于解决两个不兼容接口之间的兼容性问题。它通过将一个类的接口转换成客户端期望的另一个接口,使原本因接口不匹配而无法协同工作的类能够一起工作。原创 2025-04-11 18:24:16 · 446 阅读 · 0 评论 -
原型模式(Prototype)
原型模式是一种创建型设计模式,其核心思想是通过复制现有对象(原型)来创建新对象,而非通过构造函数实例化。当对象创建成本较高(如需要复杂计算或资源加载)时。当系统需要动态运行时指定对象类型,但避免与具体类耦合时。当需要快速生成相似对象时。在 .NET Core 中,原型模式通过ICloneable或自定义拷贝逻辑实现,深拷贝可借助序列化工具简化。选择深拷贝或浅拷贝需根据业务场景决定。对于复杂对象,推荐使用序列化方式或第三方库(如AutoMapper)来简化深拷贝实现。原创 2025-04-10 15:42:51 · 479 阅读 · 0 评论 -
建造者模式
set;set;set;set;Format");Title");Content");Footerget;set;get;set;get;set;get;set;Title } ");} }原创 2025-04-07 16:31:51 · 386 阅读 · 0 评论 -
抽象工厂模式
抽象工厂模式是一种创建型设计模式,用于创建相关或依赖对象的家族,而无需指定具体类。原创 2025-03-13 17:58:32 · 346 阅读 · 0 评论 -
第十四章 设计模式
创建型模式抽象了实例化规程,它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。随着系统演化得越来越依赖于对象复合而不是类继承,创建型模式变得更为重要。当这种情况发生时,重心从对一组固定行为的硬编码(Hard-coding)转移为定义一个较小的基本行为集,这些行为可以被组合成任意数目的更复杂的行为。这样创建有特定行为的对象要求的不仅仅是实例化一个类。在这些模式中有两个不断出现的主旋律。原创 2025-03-11 18:12:48 · 655 阅读 · 0 评论 -
单例模式详解(线程安全问题)
实现方式线程安全延迟初始化性能复杂度饿汉式是否高低双重检查锁定是是中中Lazy<T>是是高低静态构造函数是是(首次访问)高低推荐选择优先使用 ****Lazy<T>:代码简洁,性能优秀,适合大多数场景。需要兼容旧版 .NET 时,使用双重检查锁定。不要求延迟初始化时,用饿汉式。原创 2025-03-11 18:10:43 · 475 阅读 · 0 评论
分享