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()
相关推荐
勇闯逆流河1 小时前
【C++】C++11(下)
开发语言·c++
x***13393 小时前
【MyBatisPlus】MyBatisPlus介绍与使用
android·前端·后端
f***68604 小时前
【SpringBoot篇】详解Bean的管理(获取bean,bean的作用域,第三方bean)
java·spring boot·后端
z***75155 小时前
【Springboot3+vue3】从零到一搭建Springboot3+vue3前后端分离项目之后端环境搭建
android·前端·后端
胡萝卜3.06 小时前
掌握C++ map:高效键值对操作指南
开发语言·数据结构·c++·人工智能·map
电子_咸鱼7 小时前
【STL string 全解析:接口详解、测试实战与模拟实现】
开发语言·c++·vscode·python·算法·leetcode
w***95497 小时前
SQL美化器:sql-beautify安装与配置完全指南
android·前端·后端
橙子家8 小时前
Serilog 日志库简单实践(三)集中式日志与分析平台 Sinks(.net8)
后端
r***12388 小时前
Spring boot启动原理及相关组件
数据库·spring boot·后端