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()
相关推荐
2501_94542480几秒前
C++编译期矩阵运算
开发语言·c++·算法
兆子龙4 分钟前
TypeScript高级类型编程:从入门到精通
前端·后端
2301_815482936 分钟前
C++中的类型标签分发
开发语言·c++·算法
xushichao198912 分钟前
代码生成优化技术
开发语言·c++·算法
IT_陈寒13 分钟前
Python开发者的效率革命:这5个技巧让你的代码提速50%!
前端·人工智能·后端
leaves falling21 分钟前
C++类和对象(1)
开发语言·c++
2401_8732046525 分钟前
模板编译期循环展开
开发语言·c++·算法
MekoLi2928 分钟前
Spring AI 与 LangChain4j 从入门到精通:Java 后端开发者的 AI 实战手册
后端·面试
树獭叔叔32 分钟前
从RLHF到PPO:让AI学会说人话
后端·aigc·openai
Meepo_haha34 分钟前
创建Spring Initializr项目
java·后端·spring