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

ops/2024/10/19 23:32:50/

模板方法模式

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

策略模式

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

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

        代码:

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;
}


http://www.ppmy.cn/ops/124928.html

相关文章

第十章 RabbitMQ消息可靠性之MQ数据持久化

目录 一、引言 二、RabbitMQ传统持久化消息 三、惰性队列 3.1. 惰性队列与传统持久化的主要区别&#xff1a; 四、总结 一、引言 我们在使用MQ的过程中&#xff0c;除了生产者发送消息/连接MQ时存在的可靠性之外&#xff0c;MQ自身在收发消息时也存在着消息可靠性问题。如…

vue3学习记录-watch

vue3学习记录-watch 1.watch2.watchEffect2.1 watchEffect使用2.2 watchEffect好处2.2.1 消除手动维护依赖列表的负担2.2.2 侦听一个嵌套数据结构中的几个属性 1.watch 直接总结下。。。 <script setup> import { ref, reactive, computed, watch } from vueconst inpu…

ubuntu20.04 上 opencv4 源码编译安装

下载&#xff1a; 1、opencv 4.9 2、opencv_contrilb 4.x 基础依赖库 sudo apt install -y cmake make sudo apt install -y build-essential sudo apt install -y libgtk2.0-dev sudo apt install -y libavcodec-dev sudo apt install -y libavformat-dev sudo apt install …

Appium Device Farm安装教程

环境要求&#xff1a;Appium version ≥ 2.4.X 安装appium npm install -g appium2.11.3 如果安装提示如下问题 npm error code EEXIST npm error syscall rename npm error path /Users/wan/.npm/_cacache/tmp/d5787519 npm error dest /Users/wan/.npm/_cacache/content-…

小米电机与STM32——CAN通信

背景介绍&#xff1a;为了利用小米电机&#xff0c;搭建机械臂的关节&#xff0c;需要学习小米电机的使用方法。计划采用STM32驱动小米电机&#xff0c;实现指定运动&#xff0c;为此需要了解他们之间的通信方式&#xff0c;指令写入方法等。花了很多时间学习&#xff0c;但网络…

LVS-DR+Keepalived 高可用群集部署

LVS-DRKeepalived 高可用群集部署 Keepalived 的工作原理LVSKeepalived 高可用群集部署配置负载调度器&#xff08;主、备相同&#xff09;关闭防火墙和核心防护及准备IPVS模块配置keeplived&#xff08;主、备DR 服务器上都要设置&#xff09;启动 ipvsadm 服务调整 proc 响应…

2024 - 两台CentOS服务器上的1000个Docker容器(每台500个)之间实现UDP通信(C语言版本)

两台CentOS服务器上的1000个Docker容器&#xff08;每台500个&#xff09;之间实现UDP通信(C语言版本) 给女朋友对象写得&#xff0c;她不会&#xff0c;我就写了一个 为了帮助您在两台CentOS服务器上的1000个Docker容器&#xff08;每台500个&#xff09;之间实现UDP通信&…

Web安全常用工具 (持续更新)

前言 本文虽然是讲web相关工具&#xff0c;但在在安全领域&#xff0c;没有人是先精通工具&#xff0c;再上手做事的。鉴于web领域繁杂戎多的知识点&#xff08;工具是学不完的&#xff0c;哭&#xff09;&#xff0c;如果你在本文的学习过程中遇到没有学过的知识点&#xff0…