【设计模式】状态模式

概念

行为模式


类图


代码

cpp 复制代码
#include <iostream>

using namespace std;

class AudioPlayer;
class State {
public:
    ~State() = default;
    explicit State(AudioPlayer* audioPlayer) {
        player = audioPlayer;
    }

    virtual void ClickLock() = 0;
    virtual void ClickPlay() = 0;
    virtual void ClickNext() = 0;
    virtual void ClickPrevious() = 0;

protected:
    AudioPlayer* player;
};

class LockedState : public State {
public:
    void ClickLock() override {}
    void ClickPlay() override {}
    void ClickNext() override {}
    void ClickPrevious() override {}
};

class ReadyState : public State {};

class PlayingState : public State {};

class AudioPlayer {
public:

private:
    State* state;
};

int main(int argc, char *argv[]) {
    cout << "State pattern needs to be complemented." << endl;
    cout << "One cpp file cannot satisfy." << endl;

    return 0;
}
相关推荐
崎岖Qiu2 小时前
【设计模式笔记17】:单例模式1-模式分析
java·笔记·单例模式·设计模式
小雨青年5 小时前
Cursor 项目实战:AI播客策划助手(二)—— 多轮交互打磨播客文案的技术实现与实践
前端·人工智能·状态模式·交互
安冬的码畜日常7 小时前
【JUnit实战3_27】第十六章:用 JUnit 测试 Spring 应用:通过实战案例深入理解 IoC 原理
spring·观察者模式·设计模式·单元测试·ioc·依赖注入·junit5
她说彩礼65万9 小时前
C#设计模式 单例模式实现方式
单例模式·设计模式·c#
安冬的码畜日常13 小时前
【JUnit实战3_28】第十七章:用 JUnit 5 实测 SpringBoot 项目
spring boot·功能测试·测试工具·设计模式·单元测试·junit5
围巾哥萧尘13 小时前
TRAE Agent 歌曲创作助手构建与使用教程🧣
设计模式
superman超哥13 小时前
仓颉语言中流式I/O的设计模式深度剖析
开发语言·后端·设计模式·仓颉
m0_7482480215 小时前
Spring设计模式刨根问底
java·spring·设计模式
不要额外加糖16 小时前
tql,寥寥几行,实现无队列无感刷新
前端·javascript·设计模式
ACGkaka_16 小时前
设计模式学习(十二)状态模式
学习·设计模式·状态模式