C++ 设计模式原理与实战大全-架构师必学课程 | 完结

获课地址:666it.top/14228/

策略模式与装饰器模式:动态行为扩展的艺术

一、策略模式:算法的自由切换

策略模式通过一组策略类与决策者类,实现算法的动态替换。例如角色移动策略:

arduino 复制代码
cpp
class MovementStrategy {
public:
    virtual void Move() = 0;
};
class WalkStrategy : public MovementStrategy {
public:
    void Move() override { std::cout << "Character is walking." << std::endl; }
};
class Character {
private:
    MovementStrategy* currentStrategy;
public:
    Character(MovementStrategy* strategy) : currentStrategy(strategy) {}
    void Move() { currentStrategy->Move(); }
    void SetStrategy(MovementStrategy* strategy) {
        currentStrategy = strategy;
    }
};

应用场景:游戏角色行为切换、排序算法选择。

二、装饰器模式:动态扩展功能

装饰器模式通过装饰器类动态包裹原始组件,实现功能的灵活组合。例如游戏渲染效果叠加:

arduino 复制代码
cpp
class IRenderer {
public:
    virtual void Render() = 0;
};
class BaseRenderer : public IRenderer {
public:
    void Render() override { std::cout << "Base Rendering" << std::endl; }
};
class TextureDecorator : public IRenderer {
private:
    IRenderer* component;
public:
    TextureDecorator(IRenderer* c) : component(c) {}
    void Render() override {
        std::cout << "Applying Texture" << std::endl;
        component->Render();
    }
};

组合调用

scss 复制代码
cpp
IRenderer* renderer = new TextureDecorator(new BaseRenderer());
renderer->Render(); // 输出 "Applying Texture" 后调用 BaseRenderer::Render()
相关推荐
村口张大爷4 分钟前
05 — 分层架构与依赖倒置
后端·架构·系统架构
Jasonakeke1 小时前
SpringBoot自动配置原理揭秘
java·spring boot·后端
QiLinkOS1 小时前
【从实验室到商业战场:发明专利如何重塑科技与企业的共生生态】
大数据·c语言·数据结构·c++·人工智能·单片机·算法
Irissgwe2 小时前
c++11(lambda表达式与包装器、线程库)
c++·c++11·lambda表达式·线程库·包装器·互斥量库·条件变量库
IT_陈寒2 小时前
Vite热更新失灵?你可能漏了这个配置
前端·人工智能·后端
Peter·Pan爱编程2 小时前
14. Lambda 表达式:随手可写的函数对象
c++·算法·ai编程
uzong3 小时前
面试官:如何做好架构设计
后端·架构
Cosolar3 小时前
QwenPaw Agent 实现原理深度剖析
后端·面试·架构
Sincerelyplz3 小时前
【AI会议纪要实践】mapReduce、RAG 与结构化输出
java·后端·agent
不想写代码的星星3 小时前
从分支预测角度看 C++:为什么你的热循环慢得离谱?
c++