模板方法模式、策略模式(C++)

模板方法模式:

**定义:**定义一个操作算法的框架,实现步骤延迟到子类中去实现

策略模式:

**定义:**定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。该模式使得算法可独立于使用它的客户而变化。

**注:**将策略模式中的策略抽象出来,实现步骤延迟到子类中去实现,在使用策略时根据具体需求去实现对应的子类,并调用子类实现的具体策略。所以把这两种模式放在一起介绍。

代码:

cpp 复制代码
class Game {
public:
    Game() {}
    virtual ~Game() {}
    void Run()
    {
        StartGame();
    }
private:
    virtual void StartGame() = 0;
};
class BasketBall : public Game {
    void StartGame() override { std::cout << "start basketball game" << std::endl;}
};
class SocketBall : public Game {
    void StartGame() override { std::cout << "start socketball game" << std::endl;}
};

class Gamer
{
public:
    Gamer(Game * game)
    {
        m_pGame = game;
    }
    ~Gamer()
    {
        delete m_pGame;
    }
    void playGame()
    {
        if(m_pGame)
        {
            m_pGame->Run();
        }
    }
private:
    Game* m_pGame = nullptr;
};

int main() {
    Game *game = new BasketBall();
    Game *game2 = new SocketBall();
    Gamer gamer(game);
    gamer.playGame();
    Gamer gamer2(game2);
    gamer2.playGame();
    return 0;
}
相关推荐
No0d1es12 分钟前
GESP CCF C++六级编程等级考试认证真题 2024年12月
开发语言·c++·算法·青少年编程·gesp·ccf·六级
编码小哥20 分钟前
C++信号处理
c++
机器视觉知识推荐、就业指导26 分钟前
C++设计模式:组合模式(公司架构案例)
c++·后端·设计模式·组合模式
长安051134 分钟前
面试经典题目:LeetCode134_加油站
c++·算法·面试
越甲八千41 分钟前
重拾设计模式--工厂模式(简单、工厂、抽象)
c++·设计模式
一只小小汤圆2 小时前
编译笔记:vs 中 正在从以下位置***加载符号 C# 中捕获C/C++抛出的异常
c++·c#
小俊俊的博客3 小时前
海康RGBD相机使用C++和Opencv采集图像记录
c++·opencv·海康·rgbd相机
_WndProc3 小时前
C++ 日志输出
开发语言·c++·算法
薄荷故人_3 小时前
从零开始的C++之旅——红黑树及其实现
数据结构·c++
m0_748240023 小时前
Chromium 中chrome.webRequest扩展接口定义c++
网络·c++·chrome