获课地址: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()