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()
相关推荐
MX_93593 小时前
SpringBoot项目优先级以及bean的管理
java·spring boot·后端·spring
豆浆Whisky3 小时前
Go泛型实战指南:从入门到工程最佳实践|Go语言进阶(12)
后端·go
元亓亓亓3 小时前
SSM--day4--SpringMVC(补充)
java·后端·ssm
夜月yeyue4 小时前
个人写HTOS移植shell
c++·mcu·算法·性能优化·架构·mfc
ajassi20004 小时前
开源 C++ QT QML 开发(九)文件--文本和二进制
c++·qt·开源
沐雨橙风ιε4 小时前
Spring Boot整合Apache Shiro权限认证框架(应用篇)
java·spring boot·后端·apache shiro
-森屿安年-4 小时前
C++ 类与对象
开发语言·c++
考虑考虑4 小时前
fastjson调用is方法开头注意
java·后端·java ee
ajassi20004 小时前
开源 C++ QT QML 开发(八)自定义控件--圆环
c++·qt·开源