模板方法模式、策略模式(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;
}
相关推荐
Mr_WangAndy17 小时前
C++17 新特性_第二章 C++17标准库特性_std::invoke和std::invoke_result_t
c++·invoke·c++40周年·c++17新特性·invoke_result
无限进步_17 小时前
深入理解顺序表:从原理到完整实现
c语言·开发语言·数据结构·c++·算法·链表·visual studio
繁华似锦respect17 小时前
C++ 无锁队列(Lock-Free Queue)详细介绍
linux·开发语言·c++·windows·visual studio
liu****17 小时前
九.操作符详解
c语言·开发语言·数据结构·c++·算法
666HZ66618 小时前
C语言——交换
c语言·c++·算法
Mr_WangAndy18 小时前
C++14 新特性_第二章 C++14 标准库特性_std::exchange,std::quoted
c++·exchange·c++40周年·quoted·c++14新特性
无限进步_18 小时前
基于顺序表的通讯录系统设计与实现
c语言·开发语言·数据结构·c++·后端·算法·visual studio
宠..18 小时前
使用纯代码设计界面
开发语言·c++·qt
小此方18 小时前
Re:从零开始的链式二叉树:建树、遍历、计数、查找、判全、销毁全链路实现与底层剖析
c语言·数据结构·c++·算法
筱砚.18 小时前
【C++——文件操作案例】
开发语言·c++