模板方法模式、策略模式(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;
}
相关推荐
minji...5 分钟前
Linux 网络基础(三)HTTP的请求方法(GET/POST),HTTP表单、临时和永久重定向状态码、Cookie、查询参数、Web根目录
linux·运维·服务器·网络·c++·http
鱼很腾apoc6 分钟前
【学习篇】第18期 C++模板
c语言·c++
郝学胜-神的一滴8 分钟前
跨平台 C++ 静态库编译实战:Linux/Windows/macOS 三端统一实现
linux·开发语言·c++·windows·软件构建
派葛穆9 分钟前
ESP32开发- OLED显示“你好世界”——U8g2库完整教程
c++
tankeven14 分钟前
C++ 指针
c++
夜猫子ing26 分钟前
《嵌入式 Linux 控制服务从零搭建(二):从目录结构到 CMakeLists,搭一个像样的 C++ 工程骨架》
java·前端·c++
tankeven1 小时前
C++ 数组
c++
宏笋1 小时前
C++ 完美转发和应用场景
c++
进击的荆棘1 小时前
递归、搜索与回溯——综合(上)
c++·算法·leetcode·深度优先·dfs
水云桐程序员8 小时前
C++可以写手机应用吗
开发语言·c++·智能手机