- 博客(59)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 深入解析:23种软件设计模式详解及其分类(创建型、结构型、行为型)附代码示例DEMO
在软件开发领域,设计模式是一种经过反复验证和广泛使用的最佳实践。它们提供了对常见问题的标准解决方案,旨在提高代码的可重用性、可读性和可维护性。本文将详细介绍23种设计模式,按照创建型、结构型和行为型三大类别进行分类阐述。
2024-08-07 08:50:45
2913
19
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QT多媒体编程(二)——视频编程知识详解及mp4视频播放器Demo
QT多媒体编程中的视频编程功能强大且灵活,通过等核心类,开发者可以轻松实现视频的播放、暂停、停止以及显示等功能。本文深入解析了这些核心类的使用方法和相关函数的调用,并通过实际案例展示了如何在QT应用程序中集成视频功能。希望这篇文章能够帮助到正在学习QT多媒体编程的开发者们。
2024-08-02 17:43:55
627
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QT多媒体编程(一)——音频编程知识详解及MP3音频播放器Demo
QtMultimedia模块是Qt库中的一个重要模块,专门用于处理多媒体内容,如音频和视频。它提供了一组丰富的QML类型和C++类,支持音频和视频的采集、播放、录制和处理。QtMultimedia模块不仅支持基本的音频和视频播放,还提供了编解码、格式转换等高级功能。// 在.pro文件中加入模块。
2024-08-02 15:49:16
2078
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 MVC软件设计模式及QT的MVC架构
MVC是一种将应用程序分为三个核心部分的软件设计模式:模型(Model)、视图(View)和控制器(Controller)。这三个部分各自负责不同的职责,通过明确的接口相互通信,共同协作完成应用程序的功能。模型(Model):负责应用程序的数据和业务逻辑。它代表数据和业务规则,是应用程序的核心。模型接收输入数据,处理业务逻辑,然后返回处理结果。模型与数据库交互,封装了数据的访问逻辑。视图(View):负责数据的展示和用户界面的渲染。视图从模型接收数据,并将其以用户友好的方式呈现给用户。
2024-07-31 15:06:39
1047
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java面向对象课程设计——2048小游戏项目(附源码)
在Java面向对象程序设计的广阔领域中,通过实际项目来加深理论知识与实践技能的结合是一个不可或缺的过程。本项目2048游戏的设计与实现,不仅是一个对Java基础知识的全面应用,更是对面向对象编程思想的一次深刻实践。通过此项目,我们将学习到如何使用JFrame来构建图形用户界面(GUI),如何利用JPanel作为游戏的主要画布,以及如何通过监听键盘事件来实现方块的移动与合并。此外,本项目还涉及到了数据的持久化存储,即将用户的游戏分数与最高分记录到文件中,以便下次游戏时能够显示历史最高成绩。
2024-07-28 11:28:22
932
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C语言课程设计——学生成绩管理系统(完整项目超详细附源码+注释)基于链表和文件存储的学生成绩管理系统
本文旨在探讨如何设计并实现一个基于链表结构和文件存储功能的学生成绩管理系统,该系统能够满足多种实际需求,包括记录学生信息、成绩管理、成绩计算以及数据排序等。数据记录:每条记录包含学生的学号、姓名、专业以及五门课程的成绩,这些信息构成了系统的基本数据单元。添加功能:系统应提供接口允许用户输入新学生的所有信息,并将其作为新节点添加到链表的末尾。删除功能:用户可以根据学号或姓名查找并删除指定学生的记录,确保数据的准确性和时效性。修改功能:允许用户修改已存在学生的部分或全部信息,如成绩更新等。
2024-07-27 12:49:30
957
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QT网络编程(三)——UDP协议工作原理及实战
QUdpSocket类是Qt框架中用于实现UDP通信的类,它从QAbstractSocket继承而来,因此共享了大部分接口函数。Qt中的UDP通信流程包括创建UDP套接字、绑定端口、发送和接收数据以及处理错误。通过连接QUdpSocket的信号到适当的槽函数,可以方便地处理UDP通信中的各种事件。注意,由于UDP是无连接的协议,因此在设计应用时需要考虑数据的可靠性和完整性。关于QT网络编程的文章已完结啦,其他2篇文章放在下方传送门。通过对这三篇文章的学习,我想你大概了解QT中的TCP和UDP通信啦。
2024-07-26 15:12:20
858
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 QT网络编程(二)——TCP协议工作原理及实战
Qt 是一个跨平台的 C++ 图形界面开发库,它提供了丰富的模块来支持各种开发需求,其中网络编程是一个重要的部分。TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在Qt中,通过QTcpSocket和QTcpServer类可以实现TCP通信。本文将详细介绍TCP协议的工作原理以及如何在Qt中进行TCP通信的实战。
2024-07-26 09:40:18
1417
原创 C++八股文——内存管理(堆和栈的区别? C++内存分区? 内存泄漏?如何避免?什么是智能指针?有哪些种类? 什么是野指针,怎么产⽣的,如何避免 ? 野指针和悬浮指针的区别? 内存对齐是什么?)
C++内存管理堆和栈的区别C++内存分区内存泄漏?如何避免?1、什么是内存泄露?2、内存泄漏的分类3、什么操作会导致内存泄露?4、如何防⽌内存泄露?5、智能指针有了解哪些?6、构造函数,析构函数要设为虚函数吗,为什么?什么是智能指针?有哪些种类?new 和 malloc 有什么区别?delete 和 free 有什么区别?什么是野指针,怎么产⽣的,如何避免野指针和悬浮指针的区别内存对齐是什么?为什么需要考虑内存对齐?1、什么是内存对齐2、为什么需要考虑内存对⻬测试题⽬
2024-08-13 16:52:59
1118
原创 C++八股文基础(二)—— 关键字(const、static、define、typedef、inline、new、malloc、constexpr、volatile、extern、前置++和后置++)
C++八股文基础(二)—— 关键字(const、static、define、typedef、inline、new、malloc、constexpr、volatile、extern、前置++和后置++)
2024-08-13 10:38:47
809
1
原创 OpenCV高级编程——摄像头获取及录制技术(附DEMO示例))
在这个博文中,我们将详细介绍如何使用Qt框架结合OpenCV库来实现一个摄像头操作的Demo。这个Demo将涵盖打开摄像头、显示视频流以及拍照和录像等功能。
2024-08-12 17:39:41
1064
原创 C++八股文基础(一)——指针和引用的区别? 常量指针和指针常量的区别?什么是函数指针,如何定义和使用场景? 函数指针和指针函数的区别?静态局部变量\全局变量\局部变量的区别和使用场景 等
指针和引用的区别数据类型常量指针和指针常量的区别什么是函数指针,如何定义和使用场景?函数指针和指针函数的区别struct和Class的区别静态局部变量\全局变量\局部变量的区别和使用场景C++强制类型转换
2024-08-10 13:01:48
916
3
原创 C++八股文之面向对象(五)——哪些函数不能被声明为虚函数? 深拷贝和浅拷贝的区别? 运算符重载?
哪些函数不能被声明为虚函数?深拷贝和浅拷贝的区别? 运算符重载?
2024-08-10 07:00:00
866
1
原创 C++八股文之面向对象(四)——什么是虚函数和虚函数表? 虚函数和纯虚函数的区别? 什么是抽象类和纯虚函数? 简述一下虚析构函数,什么作用?说说为什么要虚析构,为什么不能虚构造?
什么是虚函数和虚函数表?虚函数和纯虚函数的区别?什么是抽象类和纯虚函数?简述一下虚析构函数,什么作用?说说为什么要虚析构,为什么不能虚构造?
2024-08-09 11:37:53
582
原创 C++八股文之面向对象(三)——c++的多态如何实现? 成员函数/成员变量/静态成员函数/静态成员变量的区别? 什么是构造函数和析构函数? C++构造函数有几种,分别什么作用?
c++的多态如何实现? 成员函数/成员变量/静态成员函数/静态成员变量的区别? 什么是构造函数和析构函数?C++构造函数有⼏种,分别什么作用?
2024-08-09 09:23:49
160
原创 C++八股文之面向对象(二)——有哪些是访问修饰符? 什么是多重继承? 简述一下 C++ 的重载和重写,以及它们的区别
有哪些访问修饰符?什么是多重继承?简述一下 C++ 的重载和重写,以及它们的区别
2024-08-08 17:36:35
162
原创 【设计模式】——解释器模式(Interpreter Pattern)
解释器模式(Interpreter Pattern)是一种行为型设计模式,它提供了一种解释语言句子或表达式的方法。这种模式特别适合需要评估复杂语法或表达式的场景,如编译器、公式解析器、查询处理系统等。本文将详细介绍解释器模式的概念、结构,并通过C++实现一个简单的算术表达式解释器。
2024-08-07 08:06:00
702
原创 【设计模式】——中介者模式(Mediator Pattern)
中介者模式(Mediator Pattern)是一种对象行为型模式,主要用于降低系统中对象之间的耦合度,通过引入一个中介者来封装对象之间的交互,使得对象之间的交互更加灵活和可扩展。本文将详细介绍中介者模式在C++中的实现方式及其应用场景。
2024-08-07 07:25:09
524
原创 【设计模式】——访问者模式(Visitor Pattern)
访问者模式(Visitor Pattern)是一种行为型设计模式,用于在不改变现有对象结构的情况下,定义对对象结构中各个元素的访问操作。本文将详细探讨访问者模式在C++中的应用,并通过示例代码进行说明。
2024-08-06 16:50:09
589
原创 【设计模式】——状态模式(State Pattern)
状态模式(State Pattern)是一种重要的行为型设计模式,它允许一个对象在其内部状态改变时改变其行为,使得对象看起来像是改变了它的类。状态模式通过将状态相关的行为封装在独立的状态类中,有效地简化了条件逻辑,提高了代码的可维护性和可扩展性。
2024-08-06 16:21:17
568
原创 【设计模式】——备忘录模式(Memento Pattern)
备忘录模式(Memento Pattern),又称快照模式(Snapshot Pattern),属于行为型设计模式。该模式的主要目的是在不破坏对象封装性的前提下,捕获并保存一个对象的内部状态,以便在需要时能够恢复该对象到原先的状态。本文将详细介绍备忘录模式的概念、实现步骤及其在C++中的应用。
2024-08-06 16:06:48
822
原创 【设计模式】——命令模式(Command Pattern)
命令模式(Command Pattern)是行为型设计模式之一,它通过将一个请求封装为一个对象,从而使请求发送者和接收者之间解耦,并提供了额外的灵活性,如支持撤销和重做、请求排队等。本文将详细介绍命令模式在C++中的实现及其应用场景。
2024-08-06 15:45:46
742
原创 【设计模式】——职责链模式(Chain of Responsibility Pattern)
职责链模式(Chain of Responsibility Pattern)是其中一种重要的行为型设计模式,它允许你将请求沿着处理者链进行传递,直到其中一个处理者能够处理它为止。这种模式的主要优点在于解耦请求的发送者和接收者,使系统更加灵活和可扩展。
2024-08-06 15:29:15
952
原创 【设计模式】——迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern)是一种行为设计模式,它为访问一个聚合对象(如列表、集合等)中的元素提供了一种统一的方法,同时又不暴露其内部表示。通过迭代器模式,算法与聚合对象的结构相分离,增加了代码的灵活性和可重用性。
2024-08-06 15:04:45
674
原创 【设计模式】——观察者模式(Observer Pattern)
观察者模式(Observer Pattern)是其中一种非常流行的设计模式,它定义了一种一对多的依赖关系,使得当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。本文将详细介绍观察者模式的概念、结构及其在C++中的实现。
2024-08-06 14:48:25
921
原创 【设计模式】——模板方法模式(Template Method Pattern)
模板方法模式通过定义一个算法的骨架,允许子类在不改变算法结构的前提下,通过重写某些步骤的具体实现来定制算法的行为。这种模式提高了代码的复用性和可维护性,使得算法的结构更加清晰,同时也便于扩展和维护。在C++中,模板方法模式是一种非常实用的设计模式,通过它我们可以构建出灵活且易于扩展的软件系统。
2024-08-06 14:29:31
599
原创 【设计模式】——策略模式(Strategy Pattern)
策略模式是一种强大的设计模式,它通过定义一系列的算法族,并将每一个算法封装起来,使它们可以互相替换,从而提高了算法的灵活性和可重用性。在C++中实现策略模式时,我们需要定义抽象策略类、具体策略类和环境类,并通过环境类来调用具体的策略。策略模式的应用场景广泛,包括但不限于多种排序算法、多种支付方式、日志记录策略和缓存策略等。此外,策略模式还可以与其他设计模式结合使用,以应对更复杂的场景。通过合理使用策略模式,我们可以编写出更加灵活、可维护和可扩展的代码。
2024-08-06 14:11:21
773
原创 【设计模式】——代理模式(Proxy Pattern)
代理模式(Proxy Pattern)是结构型设计模式的一种,它为其他对象提供一种代理以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介的作用,可以在不改变客户端代码的情况下增强或控制对象的访问。本文将详细探讨代理模式在C++中的实现和应用。
2024-08-06 11:39:05
875
原创 【设计模式】——享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern)是一种对象结构型模式,它通过共享已经存在的对象来减少内存使用量和提高系统性能。享元模式特别适用于那些创建大量相似对象而导致内存消耗过大的场景。本文将详细介绍享元模式在C++中的实现和应用。
2024-08-06 11:16:38
898
原创 【设计模式】——外观模式(Facade Pattern)
外观模式是一种非常实用的设计模式,特别适用于复杂的系统,通过提供一个简单的接口来减少客户端与子系统之间的耦合。在C++中,通过类的封装和组合,可以很容易地实现外观模式,从而提升代码的可维护性和可扩展性。
2024-08-06 10:45:21
715
原创 【设计模式】——装饰器模式(Decorator Pattern)
在软件开发中,设计模式是解决常见问题的最佳实践。装饰器模式(Decorator Pattern),又称为包装器模式(Wrapper Pattern),是一种结构型设计模式,它允许在不改变原有对象结构的基础上,动态地给对象添加一些新的职责(即增加其额外功能)。这种模式在C++中的应用广泛,特别适合于需要灵活扩展对象功能的场景。
2024-08-06 10:18:27
950
原创 【设计模式】——组合模式(Composite Pattern)
组合模式是一种强大的设计模式,它允许我们以一致的方式处理单个对象和对象组合。这种设计模式允许客户端以一致的方式处理单个对象和对象组合,从而简化了代码结构,增强了系统的灵活性和可扩展性。组合模式的核心思想在于统一对象和对象集合的处理方式,通过实现相同的接口或继承相同的抽象类,使得客户端代码可以相同地处理单个对象和组合对象。:组合模式经常与其他设计模式一起使用,如工厂模式(用于创建对象)、访问者模式(用于在不修改对象结构的前提下增加新的操作)等。
2024-08-06 09:46:43
718
原创 【设计模式】——桥接模式(Bridge Pattern)
桥接模式也称为桥梁模式、接口模式或柄体模式,它将抽象部分与它的具体实现部分分离,使它们都可以独立地变化。这种分离方式类似于将一座桥分为桥面(抽象部分)和桥墩(实现部分),两者可以独立设计和变化,互不影响。
2024-08-06 09:15:14
642
原创 【设计模式】——适配器模式(Adapter Pattern)
适配器模式的核心思想是通过一个中间的适配器类,将两个不兼容的接口进行适配。这个适配器类将目标接口(客户端期望的接口)和被适配者类(已有的接口)连接起来,使得客户端可以通过目标接口调用被适配者类的功能。适配器模式主要有三种形式:类适配器模式、对象适配器模式和接口适配器模式(默认适配器模式)。
2024-08-05 17:32:25
612
原创 【设计模式】——建造者模式(Builder Pattern)
建造者模式的核心思想是将一个复杂对象的构建过程与它的表示分离,使得同样的构建过程可以创建出不同的表示。它允许用户通过指定复杂对象的类型和内容来构建它们,而无需知道对象内部的具体构建细节。建造者模式隐藏了复杂对象的创建细节,通过一步一步构建一个复杂的对象,使得构建过程更加清晰和易于控制。
2024-08-05 16:57:34
800
原创 【设计模式】——单例模式(Singleton Pattern)
单例模式(Singleton Pattern)是这些设计模式中的一种,它提供了一种创建对象的最佳方式,确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。这种模式在需要严格控制资源访问、管理全局状态或实现共享资源访问时非常有用。
2024-08-05 16:21:16
1028
原创 【设计模式】——原型模式(Prototype Patter)
原型模式通过给出一个原型对象来指明所要创建的对象的类型,然后用拷贝这个原型对象的方法来创建出更多同类型的对象。简言之,它利用已有的对象实例(称为“原型”)来创建新的对象实例。
2024-08-05 15:28:08
751
原创 【设计模式】——抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式是所有形态的工厂模式中最抽象和最具一般性的一种。它适用于处理具有产品族(即一组相互关联或相互依赖的产品)的产品结构。产品族是指位于不同等级结构中的一组产品,它们之间可能存在一定的依赖或约束关系。抽象工厂模式通过定义一个接口,使得客户端可以在不必指定具体产品的情况下,创建多个产品族中的产品对象。
2024-08-05 14:57:08
779
原创 【设计模式】——简单工厂模式(Simple Factory Pattern)
简单工厂模式又称为静态工厂方法模式,它定义了一个工厂类,这个类根据传入的参数不同返回不同类的实例。这些实例通常都具有共同的父类或接口。简单工厂模式的核心在于将对象的创建逻辑封装在工厂类中,客户端通过调用工厂类的静态方法来获取所需的对象,而无需直接实例化具体产品类。
2024-08-05 14:28:44
603
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人