当前位置: 首页 > news >正文

擅自使用他人产品做网站宣传网站后台编辑器上传不了图片

擅自使用他人产品做网站宣传,网站后台编辑器上传不了图片,网站建设企业关键词,win2008r2搭建php网站目录 一、模式核心概念与结构二、C++ 实现示例:自动售货机状态管理三、状态模式的关键特性四、应用场景五、状态模式与其他设计模式的关系六、C++ 标准库中的状态模式应用七、优缺点分析八、实战案例:TCP 连接状态管理九、实现注意事项如果这篇文章对你有所帮助,渴望获得你的…

目录

  • 一、模式核心概念与结构
  • 二、C++ 实现示例:自动售货机状态管理
  • 三、状态模式的关键特性
  • 四、应用场景
  • 五、状态模式与其他设计模式的关系
  • 六、C++ 标准库中的状态模式应用
  • 七、优缺点分析
  • 八、实战案例:TCP 连接状态管理
  • 九、实现注意事项
    • 如果这篇文章对你有所帮助,渴望获得你的一个点赞!

状态模式(State Pattern)是一种【行为型】设计模式,它允许对象在其内部状态发生变化时改变其行为,看起来就像该对象改变了它的类一样。这种模式将状态相关的行为封装在独立的状态类中,并将状态转换逻辑集中管理,使系统更易于维护和扩展。

一、模式核心概念与结构

状态模式包含三个核心角色:

  1. 上下文(Context):定义客户端感兴趣的接口,维护一个当前状态的引用。
  2. 状态接口(State):定义特定状态下的行为接口,所有具体状态类必须实现该接口。
  3. 具体状态(Concrete State):实现状态接口,封装与特定状态相关的行为,并负责状态转换。

二、C++ 实现示例:自动售货机状态管理

以下是一个自动售货机的示例,演示如何使用状态模式管理不同状态下的行为:

#include <iostream>
#include <string>
#include <memory>// 前向声明
class VendingMachine;// 状态接口
class State {
public:virtual ~State() = default;virtual void insertMoney(VendingMachine* machine, double amount) = 0;virtual void selectProduct(VendingMachine* machine, const std::string& product) = 0;virtual void dispense(VendingMachine* machine) = 0;virtual void cancel(VendingMachine* machine) = 0;virtual std::string getStateName() const = 0;
};// 上下文:自动售货机
class VendingMachine {
private:std::shared_ptr<State> currentState;double balance;std::string selectedProduct;double productPrice;public:VendingMachine();void setState(std::shared_ptr<State> state) {currentState = state;std::cout << "State changed to: " << currentState->getStateName() << std::endl;}void insertMoney(double amount) {currentState->insertMoney(this, amount);}void selectProduct(const std::string& product) {currentState->selectProduct(this, product);}void dispense() {currentState->dispense(this);}void cancel() {currentState->cancel(this);}double getBalance() const { return balance; }void setBalance(double amount) { balance = amount; }std::string getSelectedProduct() const { return selectedProduct; }void setSelectedProduct(const std::string& product) { selectedProduct = product; }double getProductPrice() const { return productPrice; }void setProductPrice(double price) { productPrice = price; }
};// 具体状态:待机状态
class IdleState : public State {
public:void insertMoney(VendingMachine* machine, double amount) override {machine->setBalance(amount);std::cout << "Money inserted: " << amount << std::endl;machine->setState(
http://www.dtcms.com/a/525226.html

相关文章:

  • argocd发布实现预检和后检能力
  • 受欢迎的免费网站建设游戏开发和网站开发哪个好玩
  • 网站建设 软件开发的公司办公网站模板
  • 内蒙古知名网站建设wordpress 摄影博客
  • 掌握 Gemini CLI:自定义命令 (Slash Commands)
  • 平面设计师常用网站铁岭网站建设公司
  • 个人网站做推广wordpress增加论坛
  • oracle存储过程详解
  • 多线程六脉神剑第三剑:信号量 (Semaphore)
  • 网站外链怎么购买网站建设方案计划书
  • 在C#中详细介绍一下Visual Studio中如何使用数据可视化工具
  • TDengine 数据函数 ROUND 用户手册
  • 网上做网站怎么做下拉菜单广告设计软件下载
  • LeetCode 406 - 根据身高重建队列
  • ELK运维之路(异常日志告警)
  • 从零开始的C++学习生活 14:map/set的使用和封装
  • 只做同城交易的网站wordpress自定义文章类型分类模板
  • 做外贸要看哪些网站阿里云做网站怎么样
  • 常州市经开区建设局网站东莞h5网站建设
  • 个人做网站需要多少钱seo网址大全
  • Python进阶(11-2):Python游戏编程-FlappyBird
  • 网站制作怎么做网站建设平台多少钱
  • [OP-Agent] 可扩展架构 | 插件管理器plugins.go
  • ps做图游戏下载网站有哪些保定百度关键词优化
  • Python 快速提取扫描件 PDF 中的文本:OCR 实操教程
  • 做外贸需要什么网站大连网站排名网络推广公司
  • JP4-8-MyLesson前台前端(三)
  • 高校建设前沿人工智能实验室需要做哪些准备?
  • Java 25 中的最佳新特性
  • 免费网址导航网站建设西安网站群搭建