- 博客(110)
- 资源 (13)
- 收藏
- 关注

原创 学习人工智能
推荐一个学习人工智能的绝佳平台,“床长人工智能”,该教程从最基础的概念开始讲起,以通俗易懂的语言让你明白底层原理,绝对是学习人工智能的不二之选。随机截取一些目录链接
2021-05-04 09:40:06
251
原创 10.迭代器模式
本文介绍了迭代器模式(Iterator Pattern)的设计与实现。该模式用于访问聚合对象内容而无需暴露其内部表示,支持多种遍历方式并提供统一接口。文章以电视机和遥控器为例,展示了具体的类图设计和C++代码实现。核心组件包括迭代器接口(Iterator)、具体迭代器(Controller)、集合接口(ITelevision)和具体集合类(HaierTV)。通过createIterator()方法创建迭代器,实现first()、next()等操作来遍历电视频道,体现了迭代器模式封装遍历逻辑的特点,使客户端代
2025-07-27 18:51:17
255
原创 9. 桥接模式
摘要:本文探讨了开发跨平台日志记录工具时遇到的多维度变化问题。通过分析传统继承方式的局限性,引入了桥接模式解决方案。该模式将日志记录方式(抽象部分)与运行平台(实现部分)分离,使用对象组合替代继承,有效应对了存储形式和运行平台两个维度的变化。文中展示了C++实现代码,通过ImpLog接口定义平台实现,Log类作为抽象基类,DatabaseLog和TextFileLog作为具体日志方式,最终实现了.NET和Java平台下的不同日志记录功能。这种设计既符合开闭原则,又避免了类的单一职责被破坏的问题。
2025-07-27 17:32:43
402
原创 8. 状态模式
摘要 状态模式是一种行为设计模式,用于解决对象内部状态改变时行为变化的问题。该模式通过将状态抽象为独立类,使对象在不同状态下表现出不同行为。本文以酒店房间管理系统为例,展示了状态模式的实现:定义抽象状态类(State)和具体状态类(FreeState、BookState、CheckinState),环境类(Room)通过切换状态对象来改变行为。状态转换图清晰地描述了空闲、预定和入住三种状态间的转换逻辑。示例代码演示了房间状态管理的完整实现,验证了状态模式在简化复杂状态逻辑、提升代码可维护性方面的优势。
2025-07-27 13:14:25
386
原创 7. 命令模式
本文介绍了命令模式的设计与实现。命令模式将行为请求者与实现者解耦,使请求发送者无需关注具体执行者。通过电视机遥控器示例展示了该模式的结构:TV类作为Receiver接收命令;Command接口定义执行方法,其子类实现具体操作;Control类作为Invoker触发命令执行。代码演示了开关电视和切换频道的命令执行过程,体现了命令发出者与执行者分离的设计思想。该模式适用于需要将请求调用者和接收者解耦的场景。
2025-07-20 18:39:31
320
原创 6. 装饰器模式
摘要:本文介绍了装饰器模式的设计与实现。该模式通过装饰者动态地为被装饰对象添加功能,保持类扩展的灵活性。类图展示了Component、ConcreteComponent和Decorator的层级关系,并以汽车配件为例进行代码实现。示例中A1Car和A4Car作为被装饰者,GPS和Redar作为装饰者,通过叠加装饰器动态添加功能和价格。测试结果表明装饰后的a4汽车比未装饰的a1增加了配件描述和总价,验证了模式的动态扩展能力。
2025-07-19 22:43:54
255
原创 5.组合模式
摘要: 组合模式是一种树形结构设计模式,通过统一处理容器对象(Composite)和叶子对象(Leaf),简化客户端对复杂结构的操作。核心思想是将对象组织成树形层次,使客户端无需区分节点类型,通过抽象组件类(Component)定义统一接口。本文以目录树为例,实现Component基类、Leaf(文件)和Composite(目录)子类,展示如何递归构建和遍历层次结构。扩展部分将模式应用于菜单设计,支持嵌套菜单项。代码通过多态实现节点的增删查操作,最终输出树形结构,体现组合模式解耦结构与客户端的优势。
2025-07-19 16:33:11
488
原创 4. 观察者模式
本文介绍了观察者模式在教师与学生手机号通知场景中的应用。通过两种实现方案的对比,展示了传统耦合方式的局限性,并提出了基于观察者模式的解耦方案。文章详细阐述了观察者模式的工作原理,包括注册、通知和撤销注册三个关键步骤,并提供了完整的C++代码实现。该模式通过将观察者(学生)与被观察者(教师)解耦,提高了系统的可维护性和扩展性,实现了教师手机号变更时自动通知所有学生的功能,同时支持动态添加和移除观察者。
2025-07-13 08:28:00
810
原创 3. 策略模式
本文探讨了射击游戏中武器切换需求的设计策略。首先分析了传统if-else实现的弊端,指出其违反开闭原则和依赖倒置原则。随后引入策略模式解决方案,通过定义IStrategy抽象接口,实现Bow、Knife、Cannon等具体武器类,以及Context环境类来管理策略切换。该设计支持灵活扩展新武器,避免了多重条件判断,符合面向对象设计原则。最后给出了完整的C++实现代码,包括策略设置和战斗调用示例,并讨论了策略模式的优缺点。这种设计模式特别适用于需要动态切换算法或行为的场景。
2025-07-13 00:57:56
1035
原创 1. 好的设计原则
摘要:本文介绍了面向对象设计的7大核心原则,按重要性排序依次为开闭原则、依赖倒置原则、单一职责原则、里氏替换原则、合成复用原则、迪米特法则和接口隔离原则。重点阐述了各原则的核心思想:开闭原则强调通过抽象实现扩展而非修改;依赖倒置要求针对接口编程;单一职责要求类功能聚焦;里氏替换规范继承关系;合成复用提倡组合优于继承;迪米特法则主张松耦合设计;接口隔离建议细化接口功能。通过数据库设计等实例,展示了如何运用这些原则降低耦合、提高扩展性,构建灵活可维护的软件系统。
2025-07-12 21:49:43
704
原创 2.单例模式
单例模式是一种确保类只有一个实例并提供全局访问点的设计模式。它通过将构造函数私有化,并提供一个静态方法获取实例来实现。该模式适用于需要控制资源访问的场景,如日志系统或打印机管理。文中介绍了两种C++实现方式:第一种使用指针和互斥锁保证线程安全,但存在内存泄漏风险;第二种通过局部静态变量实现,自动管理内存且线程安全(C++11及以上)。两种方法都禁止拷贝构造和赋值操作,确保实例唯一性。改进后的版本更简洁安全,推荐使用局部静态变量方式实现单例模式。
2025-07-12 18:43:05
497
原创 2、开发环境优化与创建第一个插件程序
2. 命令的最后会提示是否使用vscode打开,选择打开就行。组合键,再输入相同的命令会看到弹出的框变成了自己设置的字符串。: 采用默认的终端执行编译命令会出现如下的问题。4. 接下来可以直接在默认终端里编译插件即可。: 目前的编译和运行是分开的,很不方便,尝试按。进行调试,会弹出一个新的vscode窗口。重新修改后再编译,编译完成后在新窗口按下。后,新窗口的右下角会弹出欢迎框。3. 选择下图所示的第一个即可。5. 在vscode页面输入。3. 在当前目录下会产生。7. 此时说明运行成功!
2024-12-11 22:38:29
353
原创 24.面向对象编程特性
Rust避免将struct和enum称为对象,因此它们与impl是分开的;trait对象有些类似于其它语言中的对象,它们某种程度上组合了数据与行为;无法为trait对象添加数据;trait对象被专门用于抽象某些共有行为,没有其它语言的对象那么通用;定义了一个Draw train,内含方法draw;定义结构体Screen,内有公共元素components,类型为Vector,里面放了,表示Box里的元素都实现了Draw的trait;可以用泛型表示;泛型只能放入一种类型,但是。
2024-06-24 10:15:09
823
原创 16. 一个I/O项目:构建命令行程序(上)
如果new中的参数个数小于3时,会产生错误,添加代码。下面的运行结果显示实现了文件读取的功能。从 new 中返回 Result。
2024-06-18 16:04:56
745
dnw-linux.tar.gz
2013-06-25
gtk所需的15个编译包
2012-05-04
图片跑马灯
2012-03-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人