基础设计模式理解
文章平均质量分 63
先将每种设计模式以通俗易懂以最简单的方式讲解一遍 然后在以后实践中在深入
何综瑞
记录一下C++日常学习中的知识
展开
-
《C++设计模式速览:简单入门三大类23种常用模式》
通过学习和理解这些设计模式,你可以更有效地解决软件开发中的常见问题,并编写出更加灵活和可维护的代码。C++的灵活性和强大的面向对象编程特性使得它非常适合应用这些设计模式。敬请关注,每周更新的设计模式简单入门系列基础设计模式理解_何综瑞的博客-CSDN博客。原创 2024-06-03 16:48:11 · 2156 阅读 · 0 评论 -
C++单例模式(Singleton)
单例模式(Singleton)是一种设计模式,用来确保一个类在整个程序运行期间只会生成一个实例,并提供一个全局的访问点。这个模式通常用于管理共享资源,例如配置管理、日志记录器或线程池。原创 2024-06-06 09:14:12 · 252 阅读 · 0 评论 -
C++工厂模式(Factory Method)
日志可能会被记录到不同的地方,比如文件、控制台或数据库。这使得代码更具扩展性和可维护性,例如,如果未来你想添加新的日志记录方式,只需新增一个实现了。的工厂类即可,而不需要修改现有的客户端代码。通过使用工厂方法模式,客户端代码可以灵活地选择日志记录的方式而无需直接依赖具体的。:创建不同的日志记录器实现,例如文件记录器、控制台记录器和数据库记录器。接口或从它继承,并实现具体的工厂方法以决定实例化哪个具体的。接口,它包含通用的日志记录方法。接口,包含通用的日志记录方法。:通过具体工厂的创建方法来创建。原创 2024-06-06 08:51:32 · 279 阅读 · 0 评论 -
C++抽象工厂模式(Abstract Factory)
通过使用抽象工厂模式,客户端代码可以在不修改具体家具实现的情况下,创建一整套以相同风格设计的家具。这样,如果将来你决定换成另一种风格,比如中世纪风格,你只需要新增一个,而无需改变客户端代码。这样,代码就变得更加灵活和易扩展。原创 2024-06-06 08:47:28 · 323 阅读 · 0 评论 -
C++建造者模式(Builder)
分离复杂对象的构建和表示:使得同样的构建过程可以创建不同的表示。更多的灵活性和可扩展性:构建过程可以针对不同的需求进行定制。提升代码可读性和维护性:针对复杂对象的创建逻辑进行了封装和抽象,使代码更加清晰。原创 2024-06-05 22:19:51 · 439 阅读 · 0 评论 -
C++原型模式(Prototype)
假设你是一家公司的人力资源经理,需要为新加入的员工创建入职档案。这些档案通常包含基本信息(例如姓名、地址、职位等)和一些公司共有的政策文档、培训资料等。于是,你可以创建一个基本的入职档案模板,然后每次有新员工加入时,只需复制这个模板并填入该员工的个人信息即可。这个例子展示了如何通过复制一个标准档案模板来创建新员工的入职档案,从而减少了重复操作,提高了效率。为了更好地理解,我们来看一个简单的 C++ 代码示例,模拟上述入职档案的场景。希望这个例子能帮助你更好地理解原型模式,并且更贴近你所需要的实际应用场景!原创 2024-06-05 22:15:05 · 294 阅读 · 0 评论 -
C++访问者模式(Visitor)
访问者模式通过将操作与对象结构分离,使得在不修改对象类的情况下添加新的操作变得更加容易。在这个示例中,我们定义了文件和文件夹的结构,并通过访问者模式添加了计算总大小和显示文件信息的操作。这样可以使代码更加灵活和可扩展。原创 2024-06-05 14:45:18 · 303 阅读 · 0 评论 -
模板方法模式(Template Method)
模板方法模式通过在抽象基类中定义一个模板方法,提供算法的骨架,而将具体的步骤延迟到子类中实现。这样,子类可以在不改变算法结构的情况下,重新定义算法的某些特定步骤。在这个示例中,我们定义了数据处理的通用流程,并通过不同的子类实现特定数据类型的处理步骤。这样可以使代码更加灵活和可扩展。原创 2024-06-05 14:42:30 · 312 阅读 · 0 评论 -
C++策略模式(Strategy)
策略模式通过定义一系列算法,并将每一个算法封装起来,使它们可以相互替换,从而使算法可以独立于使用它的客户端而变化。在这个示例中,我们定义了不同的支付方式,并在购物车中使用这些支付方式。通过策略模式,我们可以轻松地添加新的支付方式,而不需要修改现有的客户端代码。原创 2024-06-05 14:28:23 · 253 阅读 · 0 评论 -
C++状态模式(State)
首先,我们定义一个表示电梯状态的接口,该接口包含电梯在不同状态下的行为方法。// 电梯状态接口public:// 前向声明然后,我们定义具体的状态类,例如和,每个状态类实现接口。public:private:public:private:public:private:接下来,我们定义一个电梯上下文类,它持有当前状态的实例,并提供改变状态的方法。原创 2024-06-05 14:07:01 · 214 阅读 · 0 评论 -
C++ 观察者模式(Observer)
要理解观察者模式 (Observer Pattern),你可以将其想象成现实生活中的一对多通知系统。原创 2024-06-05 08:48:18 · 289 阅读 · 0 评论 -
C++备忘录模式(Memento)
要理解备忘录模式(Memento Pattern),可以通过生活中的实际例子来进行讲解,这样更容易理解。原创 2024-06-04 21:56:54 · 347 阅读 · 0 评论 -
C++命令模式(Command)
命令模式将请求封装为对象,从而使你可以用不同的请求对客户进行参数化。解耦调用者和接收者:调用者(RemoteControl)不需要知道如何执行命令,只需要调用命令对象的execute()方法。可扩展性:添加新命令非常容易,只需继承命令接口并实现execute()和undo()方法。支持撤销操作:通过记录执行过的命令,可以轻松实现操作的撤销。原创 2024-06-04 21:19:10 · 365 阅读 · 0 评论 -
C++解释器模式(Interpreter)
解释器模式是一种设计模式,用于定义一个文法表示,并利用该表示来解释语言中的句子。它通常用于一些固定文法的解析,例如编译器解析代码、计算器计算表达式等。解释器模式提供了一种将语言的文法表示和解释器实现分离的机制,适用于那些有固定文法规则的简单语言。代码清晰地表达了表达式的解析过程。非常适合用于简单的计算和逻辑表达式解释。原创 2024-06-04 21:36:14 · 413 阅读 · 0 评论 -
C++中介者模式(Mediator)
要理解介者模式(Mediator Pattern),我们可以通过生活中的实际例子来进行讲解,这样更容易理解。原创 2024-06-04 21:48:31 · 208 阅读 · 0 评论 -
C++迭代器模式(Iterator)
简化遍历操作:可以轻松遍历一个聚合对象中的元素,而不需要了解其内部结构。解耦合:将遍历操作与集合对象分离,简化了集合对象的设计。一致接口:通过统一的接口遍历不同类型的集合对象。原创 2024-06-04 21:42:00 · 248 阅读 · 0 评论 -
C++责任链模式(Chain of Responsibility)
责任链模式是一种行为设计模式,它允许多个对象有机会处理请求,从而避免请求的发送者和接收者之间的耦合。为了更好地理解这一点,我们可以通过一个生活中的实际例子来解释。原创 2024-06-04 09:12:05 · 258 阅读 · 0 评论 -
代理模式(Proxy Pattern)
通过这个例子我们可以看到,代理模式通过在访问目标对象前增加额外的逻辑,控制了对目标对象的访问。不仅如此,还可以增加一些额外功能,例如访问控制、日志记录、延迟加载等。这种设计在现实生活和软件开发中都非常常见和实用。原创 2024-06-03 22:51:41 · 211 阅读 · 0 评论 -
享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern)是一种结构型设计模式,通过共享技术来高效支持大量细粒度的对象。该模式的核心理念在于共享尽可能多的数据,以减少内存使用。它特别适用于那些数量庞大且状态变化少的对象。原创 2024-06-03 22:37:14 · 380 阅读 · 0 评论 -
外观模式(Facade Pattern)
通过使用外观模式,在家庭影院这个例子中,我们将多个复杂的子系统操作封装在一个简单的接口中。用户只需要通过这个接口(类)就可以很方便地控制整个系统,而不需要了解每个子系统的具体细节。这种方式在简化客户端操作的同时,也提高了系统的可维护性。原创 2024-06-03 22:29:41 · 286 阅读 · 0 评论 -
装饰模式(Decorator Pattern)
装饰模式的关键在于我们可以动态地组合装饰,不必创建大量的具体子类。可以在运行时决定对象的组合。每个装饰器只需要关心自己的附加行为,简化了类的设计。更容易添加新的装饰,增加了系统的扩展性。这个咖啡店的例子直观地展示了装饰模式在增加对象功能时避免子类爆炸的一种实用方法。原创 2024-06-03 22:24:43 · 143 阅读 · 0 评论 -
从零开始理解与实现简易C++组合模式
组合模式(Composite Pattern)在实际生活中的应用非常广泛,尤其是在需要表示“整体-部分”层次结构的场景中。我们可以用一个简单且易懂的实际工作应用来讲解:文件系统。原创 2024-06-03 17:25:16 · 299 阅读 · 0 评论 -
从零开始理解与实现C++桥接模式
你在公司需要开发一套绘图软件,这个绘图软件需要支持多种形状(比如圆形、正方形)以及多种颜色(比如红色、蓝色)。显然,你不想为每种形状和每种颜色组合都创建一个新的类,那会导致类爆炸。通过这个例子,你可以看到桥接模式如何使得形状和颜色可以独立地变化,而不会出现类爆炸的问题。例如,我们可以轻松地添加新的颜色或形状,而不需要修改现有的代码。桥接模式通过将形状和颜色分离,使得它们可以独立变化。你可以创建独立的形状类和颜色类,然后通过桥接模式将它们组合在一起。原创 2024-06-03 17:15:30 · 273 阅读 · 0 评论 -
适配器模式(Adapter)
你有一个老款的手机充电器,它使用的是Micro USB接口,而你新买的手机使用的是USB-C接口。这两个接口不兼容,但你并不想购买新的充电器。那么,你可以使用一个适配器,将Micro USB接口转换成USB-C接口,这样老款充电器就能给新手机充电了。这个适配器就是我们所谓的“适配器模式”:它将一个不兼容的接口转换成另一个接口,使得两个本来不能一起工作的设备可以协同工作。假设我们有一个老的接口(旧系统)和一个新的接口(新系统),我们希望通过适配器使二者协同工作。原创 2024-06-03 17:02:26 · 149 阅读 · 0 评论