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

万户网站协作管理系统做网站知名的学习网站

万户网站协作管理系统,做网站知名的学习网站,网站建设的价,克州seo整站排名文章目录 概述定义结构图 2.代码示例小结 概述 定义 状态模式(state pattern)的定义: 允许一个对象在其内部状态改变时改变它的行为。 对象看起来似乎修改了它的类。 状态模式就是用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题.。状态模式将一个对象的状态…

文章目录

  • 概述
    • 定义
    • 结构图
  • 2.代码示例
  • 小结

概述

定义

状态模式(state pattern)的定义: 允许一个对象在其内部状态改变时改变它的行为。 对象看起来似乎修改了它的类。

状态模式就是用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题.。状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中(用类来表示状态) ,使得对象状态可以灵活变化。

结构图

状态模式结构图

  • 上下文信息类(Context):实际上就是存储当前状态的类,对外提供更新状态的操作。在该类中维护着一个抽象状态接口State实例,这个实例定义当前状态.

  • 抽象状态类(State):可以是一个接口或抽象类,用于定义声明状态更新的操作方法有哪些,具体实现由子类完成。

  • 具体状态类(StateA 等):实现抽象状态类定义的方法,根据具体的场景来指定对应状态改变后的代码实现逻辑。

2.代码示例

// 抽象状态类
class State {
public:virtual void Handle(std::string input, std::shared_ptr<State> &currentState) = 0;
};// 具体状态A
class StateA : public State {
public:void Handle(std::string input, std::shared_ptr<State> &currentState) override {if (input == "A") {std::cout << "StateA: Handle input A." << std::endl;} else if (input == "B") {std::cout << "StateA: Transition to StateB." << std::endl;currentState = std::make_shared<StateB>();} else {std::cout << "StateA: Invalid input." << std::endl;}}
};// 具体状态B
class StateB : public State {
public:void Handle(std::string input, std::shared_ptr<State> &currentState) override {if (input == "B") {std::cout << "StateB: Handle input B." << std::endl;} else if (input == "C") {std::cout << "StateB: Transition to StateC." << std::endl;currentState = std::make_shared<StateC>();} else {std::cout << "StateB: Invalid input." << std::endl;}}
};// 具体状态C
class StateC : public State {
public:void Handle(std::string input, std::shared_ptr<State> &currentState) override {if (input == "C") {std::cout << "StateC: Handle input C." << std::endl;} else if (input == "A") {std::cout << "StateC: Transition to StateA." << std::endl;currentState = std::make_shared<StateA>();} else {std::cout << "StateC: Invalid input." << std::endl;}}
};// 上下文类,维护当前状态并执行请求
class Context {
private:std::shared_ptr<State> currentState;
public:Context(std::shared_ptr<State> initialState) : currentState(initialState) {}void Request(std::string input) {currentState->Handle(input, currentState);}
};

小结

这篇文章主要说了状态模式的定义,结构图,以及代码示例;这些都很常用的,不管是生活中,还是开发中,都是这样的。道理呢,往往很简单,看看代码示例,再想想现实生活,可能就理解了。OK,翻篇。

http://www.yayakq.cn/news/380327/

相关文章:

  • 网站建站系统程序社区网站建设费用
  • 网站备案申请流程有没有专门做蛋糕的网站
  • 网站建设越来越注重用户体验现在网站前台用什么做
  • 设计公司网站首页显示微信怎样建网站
  • 怎么做一淘宝客网站吗请别人做网站
  • 有什么网站做统计图的wordpress 手动安装
  • php企业门户网站模板成都住建局官网登陆
  • 做网站犯法新洲建设局网站
  • 推广产品网站建设爱网站在线观看视频
  • 信誉好的昆明网站建设asp wordpress
  • 杭州网站开发企业网站的颜色
  • 做网站用jsp和htmlwordpress手机号网站
  • 公司建设一个网站wordpress 路由定义
  • 南昌建筑行业网站开发网站改版文案
  • 美术馆网站建设要求深圳网站设计必选成都柚米科技09做
  • 找个免费的网站护理专业简历
  • 现在做网络推广网站建设怎么样零基础网站建设教学在哪里
  • 大气宽屏企业网站源码谷德设计网介绍
  • dw如何做网站界面建网站开发语言对比
  • 个人的网站校园网站怎么做HTML
  • 重庆网站建设哪家公司好网站建设怎么支付款项
  • 国家级示范职业学校 建设网站北京债务优化公司
  • 网站设计的简称石狮建设银行网站
  • 文明网站的建设与管理几点思考如何做网站的301重定向
  • 曲靖网站制作公司服务器网站打不开
  • 辽宁住房和城乡建设厅网站首页河南网站定制
  • 西宁市网站建设公司网站建设安全规划
  • 郑州汉狮哪家做网站好wordpress推送失败
  • 营销型网站框架图基于html5的美食网页设计
  • 引航博景做的网站网站建设 企业观点