模板方法模式、策略模式(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;
}
相关推荐
暮色_年华14 分钟前
随想 2:对比 linux内核侵入式链表和 STL 非侵入链表
linux·c++·链表
w-w0w-w1 小时前
C++模板参数与特化全解析
开发语言·c++
大锦终2 小时前
递归回溯综合练习
c++·算法·深度优先
晚风吹长发2 小时前
初步了解Linux中的动静态库及其制作和使用
linux·运维·服务器·数据结构·c++·后端·算法
风之歌曲3 小时前
c++高精度模板
c++·算法·矩阵
crescent_悦3 小时前
C++:Find Coins
c++
嵌入式进阶行者4 小时前
【算法】深度优先搜索实例:华为OD机考双机位A卷- 中庸行者
c++·算法·华为od·深度优先
云深麋鹿4 小时前
C++入门篇
c++
量子炒饭大师4 小时前
【C++入门】零域终端的虚空指针协议——【nullptr】还在为编译器给NULL匹配为int而头疼?nullptr给予你全新的字面量!
开发语言·c++·nullptr
阿豪只会阿巴5 小时前
【多喝热水系列】从零开始的ROS2之旅——Day10 话题的订阅与发布1:Python
开发语言·c++·python·ubuntu·ros2