- 博客(16)
- 收藏
- 关注
原创 【设计模式】原型模式:用“克隆”术让对象创建更灵活
本文讲解了C++中的原型模式,一种通过“克隆”已有对象创建新实例的设计模式。文章从核心概念入手,剖析其“复制即创建”的优势,并通过详细的代码示例展示如何实现简易原型及深拷贝,解决浅拷贝隐患。结合图形编辑、游戏开发等应用场景,阐明其在复杂对象创建中的价值。文中还对比了原型模式与工厂模式的区别,总结其优缺点,帮助读者全面掌握这一模式。无论是初学者还是进阶开发者,都能从中轻松理解原型模式的原理与实践应用。
2025-04-01 08:45:00
1982
原创 【设计模式】生成器模式:轻松构建复杂对象
本文讲解了一种分步骤构建复杂对象的生成器模式。通过计算机组装的代码示例,展示了其核心角色(产品、生成器、具体生成器、指挥者)及实现方式。文章还探讨了生成器模式在游戏开发、GUI设计等场景的应用价值,并与抽象工厂模式对比,突出其注重构建过程而非产品族的特性。配以生动类比和实用建议,本文帮助读者从基础到进阶全面掌握生成器模式,适合希望提升代码灵活性与可维护性的开发者。
2025-03-27 10:18:15
792
原创 【设计模式】抽象工厂:打造你的全能装备生产线
本文以生动有趣的方式讲解抽象工厂模式,通过游戏角色装备工厂的比喻,深入浅出地阐释其核心概念。文章对比简单工厂与工厂方法模式,展示抽象工厂在创建相关对象时的优势,并提供详细的C++代码示例,帮助读者轻松掌握实现方法。此外,列举GUI开发、数据库访问等实际场景,凸显其价值。
2025-03-14 08:45:00
760
原创 libusb交叉编译
libusb是一个C语言库,旨在为开发者提供一种统一的方式来访问USB设备,而无需深入了解底层操作系统的USB栈。USB设备枚举:发现和列出系统中连接的USB设备。设备打开和关闭:管理USB设备的连接和断开。配置和接口管理:控制USB设备的配置和接口设置。USB传输:支持控制传输、中断传输、批量传输和等时传输等多种USB通信方式。libusb的设计目标是跨平台兼容性,这意味着您编写的代码可以在多种操作系统上运行,只需进行少量的修改。
2025-03-10 11:02:54
1036
原创 LCM交叉编译
消息传递模型: 采用发布/订阅模式,允许多个进程通过通道(channel)高效通信。数据序列化: 提供语言无关的类型定义语言(LCM 类型规范),通过lcm-gen工具自动生成特定语言的绑定代码。跨平台支持: 支持多种语言(C、C++、Java、Python 等)和操作系统(Linux、Windows、macOS 等)。实时性: 提供低延迟通信和实时流量分析工具(如lcm-spy),无需中央通信枢纽。应用场景: 广泛用于机器人、无人机和自主系统的开发。
2025-03-05 23:58:12
826
原创 glib交叉编译
glib是一个功能强大的C语言库,广泛应用于软件开发中。它提供了许多核心功能,如数据结构、线程管理、事件循环和实用工具函数,是GNOME项目的基础组件,同时也被许多其他项目(如GTK+、GStreamer和D-Bus)所依赖。glib的设计目标是提供跨平台的抽象层,使开发者能够编写可在不同操作系统上运行的代码。交叉编译是一种特殊的编译技术,允许开发者在一个平台(宿主机)上编译出可在另一个平台(目标机)上运行的二进制文件。这对于嵌入式系统、移动设备或其他架构(如ARM、MIPS)的开发尤为重要。
2025-03-05 17:11:55
752
原创 【设计模式】工厂方法:从交通工具系统看设计的奥秘
工厂方法模式是设计模式中的一颗明星,本文以交通工具系统为背景,生动讲解其核心思想。通过C++代码实现汽车、飞机、轮船的创建,展示如何将对象实例化推迟到子类,兼具灵活性与扩展性。文章对比简单工厂与工厂方法,剖析两者的优劣,并结合GUI 框架、游戏生成和文档处理等场景,阐明其应用价值。无论是GUI控件还是游戏敌人,工厂方法都能解耦创建逻辑,提升代码优雅度。轻松有趣的比喻和详尽示例,带你从零掌握这一模式!
2025-03-04 10:23:49
909
原创 【设计模式】简单工厂:让你的代码像点餐一样简单!
本文生动讲解了C++简单工厂模式,以餐馆点餐类比其核心:客户端通过工厂创建对象,无需关心细节。以“食物工厂”为例,展示了Food基类、Pizza等产品类及FoodFactory的实现,并分析其优缺点。文中区分了其他工厂模式,并列举游戏开发、GUI库等场景,说明各角色的作用。简单工厂让代码更优雅,是设计模式的实用入门。
2025-03-03 15:40:10
741
原创 【设计模式】单例模式:程序里的“独一无二”是如何炼成的?
单例模式确保类只有一个实例,并提供全局访问。本文生动讲解C++实现单例:从基础“懒汉模式”到线程安全的加锁优化,再到优雅的Meyers' Singleton,利用C++11实现简洁与安全并存。提供详细代码与优缺点分析,易于掌握。列举日志管理、线程池等场景,展示实用性,同时提醒测试难题与全局状态风险。适合C++初学者与进阶开发者,快来打造你的“独一无二”!
2025-02-28 15:53:30
464
原创 RViz2中创建自定义Panel面板
RViz2 是 ROS2 中用于可视化数据的工具。通过创建自定义 Panel,你可以定制 RViz2 的用户界面,实现与外部数据源交互,或者显示额外的控制面板。本教程将引导你快速创建一个简单的 Panel,展示如何在 RViz2 中集成基本的 UI 元素。
2025-01-24 10:47:51
473
原创 QTableView/QTableWidget单元格自适应拉伸
QTableView及QTableWidget实现自适应调整表格单元格的的宽度以及高度,当表格进行拉伸改变了表格的大小时,单元格的大小将跟着表格大小的改变而自适应改变。
2023-11-21 14:28:33
6040
1
原创 QTreeView实现层级选中联动效果
在MyModel中,我们为每个节点添加了一个布尔属性check_state,用于记录该节点的选中状态。在处理选中项更改的时候,我们使用update_children()和update_parent()方法更新选中状态,并使用setData()方法更新TreeView上的项。在TreeView中,我们为节点、消息和信号添加了自定义的setData()方法,用于更新其选中状态。在MyModel中,我们还重载了data()方法,以便我们可以为TreeView中的每个项提供不同的文本和显示样式。
2023-03-15 20:10:03
944
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人