模板方法模式、策略模式(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;
}
相关推荐
草莓熊Lotso3 小时前
【C++ 基于微服务的即时通讯系统】etcd + brpc 从安装到服务注册发现全链路实战
网络·数据库·c++·redis·微服务·etcd
把我格子衫拿来10 小时前
VTK 9.5 与 Qt 6 联合开发:从嵌入三维窗口到可维护的桌面架构
c++·python·qt·vtk·三维可视化
无忧.芙桃10 小时前
C++语言原理与实践(十六):多态机制讲解
开发语言·c++·多态
wuminyu12 小时前
JMM学习总结:深入理解happens-before关系
java·linux·c语言·jvm·c++
xxwl58512 小时前
区域赛分类题解
c++·笔记·学习·算法
青少儿编程课堂13 小时前
蓝桥杯+全国青少年信息素养大赛+电子学会PythonC/C++考级:最长公共子序列LCS解析
c++·python·算法·bfs·信息学竞赛
代钦塔拉14 小时前
【C++/Qt 进阶】设计模式系列(2):工厂模式——从游戏角色到披萨店
c++·算法·设计模式
把我格子衫拿来16 小时前
VTK 与 Qt 的 CMake 工程怎么组织?模块、工具链与二进制兼容排错
c++·qt·vtk·cmake·工程实践
灯澜忆梦16 小时前
【面向对象编程c++】| 指针与自定义数据类型
开发语言·c++·算法
xxwl58516 小时前
区域赛算法模版第八章---贪心(Greedy)
c++·笔记·学习·算法