设计模式
文章平均质量分 71
CoderIsArt
内视、慎独、无悔代码人生;数字化、人性化、科学化;自省的底层程序员,努力与世界同步。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
四种对象型创建模式:抽象工厂、 build模式、原型ProtoType与单例模式
本文介绍了四种创建型设计模式:抽象工厂模式用于创建相关产品族,确保产品兼容性;建造者模式将复杂对象的构建过程分离,支持分步创建;原型模式通过克隆避免重复初始化,适合创建成本高的对象;单例模式确保全局唯一实例,提供集中访问点。每种模式都通过Python和C++代码示例展示实现,并分析了优缺点及适用场景。这些模式为对象创建提供了灵活解决方案,开发者可根据具体需求选择合适模式。原创 2025-09-30 14:47:32 · 731 阅读 · 0 评论 -
基于类的四种设计模式
本文摘要:介绍了四种常见设计模式及其实现。工厂方法模式通过子类决定实例化解耦对象创建;适配器模式使用多重继承转换不兼容接口;解释器模式构建文法类层次结构解释特定语言;模板方法模式在抽象类中定义算法骨架,允许子类重写特定步骤。每种模式均包含问题描述、解决方案、UML组件图和代码示例(Python/C++/C#),并分析了优缺点。这些模式体现了开闭原则、依赖倒置等面向对象设计原则,适用于不同场景的对象创建、接口适配、语言解释和算法封装需求。原创 2025-09-30 11:50:10 · 895 阅读 · 0 评论 -
访问者模式 (Visitor Pattern)
访问者模式是一种行为设计模式,允许在不修改元素类的情况下定义新操作。其核心思想是通过双重分发实现操作选择,将数据结构与操作分离。该模式包含五个角色:Visitor接口、具体访问者、Element接口、具体元素和对象结构。示例展示了几何图形处理、编译器AST处理和文档导出系统三种应用场景。优点包括易于添加新操作、集中化算法、累积状态等,但缺点是新元素类型难以添加、破坏封装性。适用于对象结构稳定但需要频繁添加新操作,或避免污染元素类的场景,如编译器、文档处理等系统。该模式通过分离数据结构与操作,提供强大的扩展能原创 2025-08-27 18:09:40 · 394 阅读 · 0 评论 -
模板方法模式 (Template Method Pattern)
模板方法模式是一种行为设计模式,它在父类中定义算法框架,允许子类重写特定步骤而不改变整体结构。该模式包含抽象类(定义模板方法和基本操作)和具体类(实现具体步骤)。通过C++示例展示了饮料制作、数据处理和游戏AI三种应用场景,演示了如何通过继承实现代码复用和行为定制。优点包括代码复用、控制反转和良好扩展性,缺点是可能限制灵活性和产生过多子类。与策略模式相比,模板方法使用继承而非组合,适合需要固定算法框架的场景。该模式特别适用于框架设计,能有效封装不变部分并提供扩展点。原创 2025-08-27 17:27:53 · 364 阅读 · 0 评论 -
策略模式 (Strategy Pattern)与几个C++例子
策略模式是一种将算法封装为独立对象的设计模式,使它们可以相互替换。其核心在于分离算法定义与使用,通过统一接口实现多态调用,避免条件判断。该模式包含三个角色:Context(上下文)、Strategy(策略接口)和ConcreteStrategy(具体策略实现)。文中通过C++示例展示了三种应用场景:1)排序策略(快速排序、冒泡排序等);2)支付系统(信用卡、PayPal等支付方式);3)导航系统(最快、最短等路线计算)。每个示例均演示了如何动态切换策略而无需修改客户端代码,体现了策略模式的灵活性和可扩展性。原创 2025-08-27 16:58:35 · 339 阅读 · 0 评论 -
状态模式与几个经典的C++例子
状态模式是一种行为设计模式,通过将对象的不同状态封装为独立类来简化复杂的状态转换逻辑。其核心思想是将状态判断逻辑转移到专门的类中,避免使用大量条件语句。主要包含Context(上下文)、State(状态接口)和ConcreteState(具体状态)三个角色。文中通过三个C++示例展示了模式应用:1)电灯开关(简单状态转换);2)TCP连接(复杂状态机);3)售货机(实际业务逻辑)。该模式遵循开闭原则,便于扩展新状态而无需修改现有代码,有效解耦状态相关行为与上下文对象。原创 2025-08-26 16:25:42 · 197 阅读 · 0 评论 -
观察者模式 (Observer Pattern)与几个C++应用例子
观察者模式实现一对多依赖关系,当主题对象状态变化时自动通知所有观察者。该模式包含四个核心角色:Subject(维护观察者列表)、ConcreteSubject(管理具体状态)、Observer(定义更新接口)和ConcreteObserver(实现业务逻辑)。通过C++示例展示了气象站(主题)与显示设备(观察者)的典型实现,演示了动态注册/移除观察者及状态自动通知机制。该模式有效解耦主题与观察者,增强系统灵活性,适用于GUI事件处理、发布-订阅系统等场景。原创 2025-08-26 16:00:55 · 599 阅读 · 0 评论 -
Memto模式与几个经典C++应用
备忘录模式是一种行为设计模式,用于在不破坏封装性的前提下保存和恢复对象状态。它包含三个角色:原发器(保存/恢复状态)、备忘录(存储状态)和负责人(管理备忘录)。该模式适用于文本编辑器撤销、游戏存档、事务回滚等场景。C++实现中,通过友元类控制备忘录访问权限,确保只有原发器能操作状态。优点包括状态恢复简便和封装性好,缺点是可能消耗较多内存。示例展示了文本编辑器撤销、游戏存档和数据库回滚等实际应用。原创 2025-08-25 10:47:32 · 71 阅读 · 0 评论 -
中介者模式与几个C++应用实例
中介者模式是一种行为设计模式,通过中介对象封装对象间的交互,降低耦合度。该模式包含四个核心角色:中介者接口、具体中介者、同事类接口和具体同事类。文章以聊天室和飞机塔台调度系统为例,展示了中介者模式的C++实现。在聊天室场景中,用户通过中介者发送消息,无需知道其他用户存在;在塔台调度系统中,飞机通过塔台协调起降。该模式优势在于解耦对象、集中控制交互逻辑、易于扩展系统。代码示例演示了如何实现松耦合的星形通信结构,避免复杂的网状依赖关系。原创 2025-08-24 20:12:01 · 838 阅读 · 0 评论 -
XX装配线生产管理系统架构设计文档
构建一个高内聚、低耦合、可扩展、高性能、高可靠的数字化生产管理系统原创 2025-08-24 11:31:41 · 81 阅读 · 0 评论 -
迭代器模式与几个经典的C++实现
迭代器模式是一种行为设计模式,用于顺序访问聚合对象中的元素而不暴露其内部结构。该模式包含迭代器接口、具体迭代器、聚合接口和具体聚合四个角色,适用于需要统一遍历接口、支持多种遍历方式的场景。优点包括职责分离、开闭原则支持等,缺点是可能增加简单集合的复杂度。文中提供了C++实现示例,包括自定义数组迭代器、二叉树中序遍历迭代器、STL风格过滤迭代器等,展示了迭代器模式在不同场景下的应用。该模式是C++标准库的核心设计思想,特别适用于自定义容器和复杂数据结构的遍历需求。原创 2025-08-23 21:29:19 · 456 阅读 · 0 评论 -
解释器模式与布尔表达式的C++实现
解释器模式是一种行为设计模式,用于构建简单的语言解释器。它将文法规则表示为类层次结构,通过递归调用实现句子解释。本文详细介绍了该模式的结构(包括抽象表达式、终结符、非终结符和上下文角色)及其优缺点,并展示了如何用C++实现一个布尔表达式求值器。该实现支持变量、常量及逻辑运算符,通过构建抽象语法树(AST)并递归解释节点来完成求值。文章还讨论了实际应用中需要完善的方面,如解析器构建、错误处理等扩展功能。该模式适用于简单文法场景,但对复杂文法维护性较差。原创 2025-08-23 11:58:29 · 89 阅读 · 0 评论 -
解释器模式(Interpreter Pattern)及C++实现
解释器模式是一种行为设计模式,用于定义语言的文法规则并提供解释执行功能。该模式通过抽象表达式、终结符表达式和非终结符表达式等角色构建语法树,实现对特定领域语言的解释。典型应用包括数学表达式计算、SQL解析和正则表达式处理等。文中提供了C++实现示例:一个数学表达式计算器(支持变量、加减乘除运算)和一个简化版SQL条件解析器(支持AND/OR/NOT逻辑和比较运算)。解释器模式优点在于易于扩展文法,但缺点是复杂文法难以维护且执行效率较低。该模式适用于需要解释简单语言且效率要求不高的场景。原创 2025-08-08 14:31:15 · 4159 阅读 · 0 评论 -
命令模式(Command Pattern)及C++实现
命令模式是一种行为设计模式,它将请求封装为对象,实现调用者与接收者的解耦。该模式包含命令接口、具体命令、接收者、调用者和客户端五个核心角色。摘要展示了五个经典应用场景的C++实现:1)文本编辑器的撤销/重做;2)智能家居遥控器;3)支持撤销的交易系统;4)线程池任务调度;5)游戏输入处理。命令模式优势包括解耦、支持撤销/重做、事务处理、灵活扩展和队列/日志功能,适用于需要请求封装、解耦和操作记录的复杂系统设计。原创 2025-08-08 11:41:32 · 303 阅读 · 0 评论 -
职责链模式应用场景与C++实现
职责链模式是一种行为设计模式,通过将多个处理对象连接成链,使请求沿着链条传递直到被处理。该模式包含抽象处理器、具体处理器和客户端三个核心组件,具有动态组合流程、降低耦合度等特点。典型应用场景包括多级日志过滤、订单处理流程、游戏事件处理等。文中以C++实现的采购审批系统为例,展示了不同层级审批人(经理、总监、CFO、董事会)按金额分级的处理流程。该模式支持功能增强和模板化实现,建议结合工厂模式构建责任链,并可通过组合模式、策略模式等进行扩展,特别适用于需要动态调整处理流程的场景。原创 2025-08-07 21:05:40 · 350 阅读 · 0 评论 -
设计模式中的行为模式
本文系统解析了11种行为型设计模式的核心思想与典型应用。责任链模式适用于多级审批系统;命令模式支持撤销/重做操作;解释器模式处理语法解析;迭代器模式统一集合遍历;中介者模式简化对象交互;备忘录模式实现状态恢复;观察者模式建立发布订阅机制;状态模式将行为委托给状态对象;策略模式使算法可互换;模板方法定义算法骨架;访问者模式分离操作与对象结构。这些模式通过抽象行为和规范通信,有效解决了面向对象设计中的职责分配问题,广泛应用于现代框架如Spring、React等场景。理解其本质比记忆具体实现更重要。原创 2025-08-07 20:53:30 · 1030 阅读 · 0 评论 -
代理模式(Proxy Pattern)及其应用场景
代理模式是一种结构型设计模式,通过代理对象控制对目标对象的访问。它主要特点包括:控制访问权限、添加额外功能(如日志、缓存)、延迟初始化资源密集型对象,以及作为远程对象的本地代表。代理模式分为虚拟代理(延迟加载)、保护代理(访问控制)、远程代理和智能引用代理等类型。示例代码展示了代理模式在图像加载、数据库访问控制、资源引用计数和远程服务调用等场景的应用。与装饰器模式不同,代理模式着重于访问控制而非行为扩展,适用于延迟加载、权限管理、远程服务代理等场景。原创 2025-08-06 15:33:02 · 462 阅读 · 0 评论 -
享元模式(Flyweight Pattern)及其应用场景
享元模式是一种优化内存使用的结构型设计模式,通过共享相似对象来减少资源消耗。其核心是将对象状态分为内部状态(可共享的不变部分)和外部状态(不可共享的变化部分),并使用工厂管理共享对象。该模式适用于需要处理大量相似对象的场景,如文字处理、游戏开发和图形渲染。示例展示了在C++中实现享元模式的三种应用:字符对象共享、树木类型共享和围棋棋子共享,通过工厂统一管理对象创建和复用,有效降低了内存占用。实现关键在于合理分离内外状态,并由客户端维护外部状态。原创 2025-08-06 15:20:40 · 305 阅读 · 0 评论 -
外观模式(Facade Pattern)及其应用场景
外观模式是一种简化复杂系统的设计模式,通过提供统一的高层接口来降低子系统使用难度。该模式具有解耦客户端与子系统、提高易用性等优点,适用于系统集成、多层架构等场景。文中通过计算机启动、家庭影院和编译器三个C++示例,展示了外观模式的具体实现方式:分别为复杂子系统封装简洁接口(如ComputerFacade统一管理CPU/内存等组件),使客户端调用更简单。该模式常与其他设计模式结合使用,既能隐藏系统复杂性,又保留直接访问子系统的灵活性。原创 2025-08-06 14:32:46 · 332 阅读 · 0 评论 -
组合模式(Composite Pattern)及其应用场景
组合模式是一种结构型设计模式,用于表示"部分-整体"的树形层次结构。它通过将对象组合成树状结构,使得用户对单个对象和组合对象的使用具有一致性。模式包含抽象构件(Component)、叶子构件(Leaf)和容器构件(Composite)三个核心角色,适用于文件系统、UI组件、组织结构等需要处理树形数据的场景。优点是能清晰定义层次结构、统一处理简单和复杂元素,但设计较复杂且可能违反依赖倒置原则。文中提供了C++实现的4个示例(文件系统、图形绘制、组织架构和UI组件),展示了如何应用该模式处理原创 2025-08-06 14:16:48 · 373 阅读 · 0 评论 -
装饰器模式与C++实现
装饰者模式是一种结构型设计模式,允许动态地为对象添加功能而不改变其结构。它通过装饰器类包装原有对象,比继承更灵活。核心包括组件接口、具体组件和装饰器类,适用于需动态添加职责或避免子类爆炸的场景。优点包括灵活性、避免类爆炸、符合开闭原则,缺点可能增加系统复杂性。文中提供了C++实现的文本格式化和咖啡订单系统两个示例,展示了如何通过装饰器动态添加功能。该模式在GUI组件、I/O流处理等场景中应用广泛。原创 2025-08-05 17:39:40 · 397 阅读 · 0 评论 -
桥接模式(Bridge Pattern)及其应用场景
桥接模式是一种结构型设计模式,它将抽象与实现分离,使两者能独立变化。该模式适用于存在多个独立变化维度的系统,可避免继承带来的复杂性。通过定义抽象类和实现类接口,桥接模式提高了系统扩展性,实现细节对客户透明。文中提供了三个C++实现案例:图形绘制系统(形状与渲染器)、设备远程控制(遥控器与设备)、日志系统(日志类型与输出方式),展示了如何将抽象部分与实现部分解耦。该模式虽然增加了设计复杂度,但能有效处理多维度变化需求。原创 2025-08-05 15:33:38 · 298 阅读 · 0 评论 -
如何选择结构型模式?
摘要:适配器模式是一种结构型设计模式,用于解决接口不兼容问题。它通过将现有接口转换为目标接口,使不兼容的类能够协同工作。核心角色包括目标接口、被适配者和适配器,可通过类继承或对象组合实现。适配器模式适用于系统集成、旧系统升级等场景,能提高代码复用性但可能增加系统复杂性。C++示例展示了类适配器(多重继承)和对象适配器(组合)的实现方式,以及STL中的适配器应用。该模式在数据库驱动、日志框架等实际场景中广泛应用。原创 2025-08-05 15:00:04 · 267 阅读 · 0 评论 -
适配器模式的三种C++实现
适配器模式是一种结构型设计模式,用于解决接口不兼容问题。它通过转换接口使不兼容的类能够协同工作。文章介绍了三种C++实现方式:1)类适配器通过继承实现;2)对象适配器通过组合实现;3)参数化适配器通过运行时配置实现。关键组件包括目标接口、被适配者和适配器。每种实现方式各有优缺点:类适配器可重写行为但需多重继承;对象适配器更灵活但增加间接层;参数化适配器最灵活但接口较复杂。典型应用场景包括系统集成、第三方库适配和接口标准化。实现时需注意资源管理和线程安全。原创 2025-07-29 14:43:25 · 493 阅读 · 0 评论 -
创建型设计模式
本文介绍了五种主要的创建型设计模式及其C++实现:1) 单例模式确保类唯一实例;2) 工厂方法模式通过子类决定实例化对象;3) 抽象工厂模式创建相关对象家族;4) 建造者模式分离复杂对象构建与表示;5) 原型模式通过复制创建新对象。每种模式都包含角色关系图和完整的C++代码示例,展示了线程安全单例、工厂方法实现、抽象工厂应用、建造者流程和原型克隆等关键技术实现。这些模式为对象创建提供了灵活、可复用的解决方案。原创 2025-06-11 21:14:46 · 693 阅读 · 0 评论 -
MVC与MVP设计模式
MVC与MVP设计模式原创 2025-04-30 14:55:53 · 915 阅读 · 0 评论 -
Abstract Factory 模式与C++/C#的代码实现
设计模式:抽象工厂原创 2025-04-29 21:43:51 · 716 阅读 · 0 评论 -
以光盘读写系统演示面向对象设计的原则与方法
面向对象设计原则与方法 光盘存储系统原创 2025-03-19 22:08:38 · 1216 阅读 · 0 评论 -
用C++实现一个基于模板的观察者设计模式
观察者模式 C++模板实现原创 2025-01-17 15:49:35 · 738 阅读 · 0 评论 -
Reference Counter Pattern(引用计数模式)
引用计数模式原创 2025-01-16 16:22:15 · 402 阅读 · 0 评论 -
单例模式与QT中的C++实现
单例模式在Qt中的实现原创 2024-11-21 10:42:20 · 508 阅读 · 0 评论 -
工厂方法模式与抽象工厂模式
工厂模式与抽象工厂模式C++实现原创 2024-10-29 15:01:45 · 1642 阅读 · 0 评论 -
基于QT用工厂模式实现串口通信与网络通信激光器的控制
用设计模式实现两类激光器的实现:支持串口与网口通信。激光器支持操作:1.开关,2。功率,3.频率:基频+分频因子。原创 2024-10-29 10:30:36 · 267 阅读 · 0 评论 -
C++实现MVC模式,用来显示激光器的当前状态:开或关,输出功率以及工作频率
用C++实现一个MVC模式原创 2024-10-25 11:16:53 · 637 阅读 · 0 评论 -
面向对象编程关系:组合Composition和聚合Aggregation
面向对象中的组合与聚合的区别原创 2024-10-17 14:31:03 · 438 阅读 · 0 评论 -
架构设计(11)常见的几个嵌入式操作系统介绍
嵌入式操作系统介绍涉及FreeRtos,VxWorks,QNX,RTEMS,Embedded Linux,μC/OS原创 2024-09-01 07:39:34 · 3078 阅读 · 0 评论 -
设计模式---简单工厂模式
设计模式之简单工厂模式原创 2024-08-16 21:50:11 · 709 阅读 · 0 评论 -
设计模式---构建者模式(Builder Pattern)
设计模式中的构建模式实现原创 2024-08-16 19:46:43 · 920 阅读 · 0 评论 -
Pipeline模式实现Hamilton图判定的并行算法
Hamiton判定 Pipeline原创 2022-10-10 11:00:43 · 260 阅读 · 0 评论 -
FastFlow练习系列(5)pipeline传递道路矩阵
pipeline原创 2022-10-10 08:13:25 · 226 阅读 · 0 评论
分享