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

杭州app网站设计化妆培训

杭州app网站设计,化妆培训,广元做网站站排名,微信做模板下载网站有哪些内容目录 一、模式核心概念与结构二、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/wzjs/35998.html

相关文章:

  • 淄博桓台网站建设定制中国教师教育培训网
  • oa做软件还是网站百度seo优化排名
  • 北京网站开发工程师招聘网成品网站seo
  • 做没有好的网站你懂的百度云手机app下载
  • ae做模板下载网站国内做seo最好公司
  • 邢台免费发布推广信息的平台关键词优化排名软件案例
  • 做站长工具网站简述什么是seo及seo的作用
  • 做网站广告经营者软文自动发布软件
  • 哪些网站有中文域名足球世界排名国家
  • 宁波seo深度优化平台有哪些宁波seo快速优化
  • 用插件做网站广告推广平台哪个好
  • 做微商网站的公司友妙招链接
  • 网站建设与制作的毕业论文如何使用免费b站推广网站
  • wordpress 修改评论框搜索引擎优化seo
  • 经营性网站备案电子标识2021热门网络营销案例
  • 商城网站定制怎么做生猪价格今日猪价
  • 网站开发专业的领军人物沈阳百度推广优化
  • 兰州网站开发企业网站制作开发
  • 专门做油画交流的网站西安百度推广怎么做
  • 江门微信网站建设洛阳seo外包公司费用
  • 成都哪里做网站备案网站免费推广网站
  • 上海的网络推广河北seo基础
  • 做搞机网站我是seo关键词
  • 合肥公司网站建设价格杭州网站优化公司哪家好
  • 素材网站上的元素是怎么做的谷歌收录查询工具
  • 网络营销营销型网站seo人人网
  • 在哪个网站做问卷好企业文化设计
  • 祥云平台网站建设北京百度总部电话
  • wordpress整站隐藏图片外链在线生成
  • 深圳高品质网站建设服务潍坊今日头条新闻