C++ Visitor 模式:在不修改类结构的情况下添加新操作

哈喽,各位好!今天咱们来聊聊C++中的Visitor模式,一个能让你在不改动现有类结构的前提下,给它们“穿新衣戴新帽”的神奇设计模式。说白了,就是给你的类增加新功能,但又不想动它们的老代码。 故事的开始:一个简单的图形系统 想象一下,你正在开发一个图形系统,里面有圆形(Circle)、矩形(Rectangle)和三角形(Triangle)三种基本图形。每个图形都有自己的绘制(draw)方法,用来在屏幕上显示自己。 #include <iostream> #include <vector> class Shape { public: virtual void draw() = 0; virtual ~Shape() {} // 记得加虚析构函数,防止内存泄漏 }; class Circle : public Shape { public: void draw() override { std::cout << “Drawing Circlen”; } }; class Rectangle : public Shape { public: void dr …

行操作:添加、删除与合并

行操作:代码世界的灵魂舞者——添加、删除与合并 各位观众,各位靓仔靓女,欢迎来到“代码炼金术”课堂!今天我们要聊点啥呢? 别着急,先来猜个谜: 谜面: 静若处子,动若脱兔,能让代码焕发生机,也能让代码灰飞烟灭。 猜一代码操作! 想必各位聪明的脑袋瓜已经嗡嗡作响了吧?没错,答案就是: 行操作! 欸? 行操作? 听起来好像很不起眼,但它却是我们代码世界中真正的灵魂舞者。 想象一下,你是一位建筑师,手握砖瓦,而每一行代码,就是你手中的一块砖。你想建造摩天大楼,还是温馨小屋? 关键就在于你如何巧妙地添加、删除、合并这些代码“砖块”。 今天,就让我们一起揭开行操作的神秘面纱,深入了解它在代码世界中扮演的重要角色,以及如何像一位优雅的舞蹈家一样,在代码的舞台上翩翩起舞。💃🕺 第一幕:添砖加瓦,代码的生命源泉——添加操作 代码就像一棵树,需要不断地生长,而添加操作,就是让它枝繁叶茂的阳光雨露。 想象一下,你写了一个简单的计算器程序,只能做加法,突然有一天,你想让它也能做减法、乘法、除法,怎么办? 答案很简单: 添加代码! 添加操作,顾名思义,就是在现有的代码中插入新的代码行。 它可以是简单的一行注释 …