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

亚马逊做品牌备案自有网站广东公园网站建设代理公司

亚马逊做品牌备案自有网站,广东公园网站建设代理公司,廊坊自动seo,如何开网店详细教程Linux C 055-设计模式之状态模式 本节关键字#xff1a;Linux、C、设计模式、状态模式 相关库函数#xff1a; 概念 状态模式#xff08;State Pattern#xff09;是设计模式的一种#xff0c;属于行为模式。允许一个对象在其内部状态改变时改变它的行为。对象看起来似…Linux C 055-设计模式之状态模式 本节关键字Linux、C、设计模式、状态模式 相关库函数 概念 状态模式State Pattern是设计模式的一种属于行为模式。允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中可以把复杂的判断逻辑简化。 状态模式解决对象行为依赖于其状态的问题使得对象可以在状态变化时切换行为。 优缺点 优点 1、封装状态转换规则将状态转换逻辑封装在状态对象内部。 2、易于扩展增加新的状态类不会影响现有代码。 3、集中状态相关行为将所有与特定状态相关的行为集中到一个类中。 4、简化条件语句避免使用大量的条件语句来切换行为。 5、状态共享允许多个上下文对象共享同一个状态对象。 缺点 1、增加类和对象数量每个状态都需要一个具体的状态类。 2、实现复杂模式结构和实现相对复杂。 3、开闭原则支持不足增加新状态或修改状态行为可能需要修改现有代码。 使用场景 1、一个对象的行为取决于它的状态并且它必须在运行时刻根据状态改变它的行为。 2、一个操作中含有庞大的多分支结构并且这些分支决定于对象的状态。 当对象的行为随状态改变而变化时考虑使用状态模式。状态模式适用于替代复杂的条件或分支语句。 角色说明 状态模式包含以下几个主要角色 上下文Context定义了客户感兴趣的接口并维护一个当前状态对象的引用。上下文可以通过状态对象来委托处理状态相关的行为。 状态State定义了一个接口用于封装与上下文相关的一个状态的行为。 具体状态Concrete State实现了状态接口负责处理与该状态相关的行为。具体状态对象通常会在内部维护一个对上下文对象的引用以便根据不同的条件切换到不同的状态。 代码示例 //头文件 #include iostream using namespace std;class Context; // 抽象出来的状态类 class State { public:/* 抽象的接口每个子类去实现这个接口根据自己的逻辑执行任务或者转换状态。*/virtual void Handle(Context *context) 0;// 获得当前的状态virtual void GetState() 0; };// 状态管理类 class Context { public:// 初始化状态Context(State *state) {m_pState state;}// 获得当前的状态State* GetState() {return m_pState;}// 改变当前的状态void SetState(State *state){m_pState state;}// 执行状态类实现的方法void Request() {m_pState-Handle(this);}State* m_pState; }; // 具体的状态子类 class ConcreteStateA:public State { public:void Handle(Context *context);void GetState(); }; // 具体的状态子类 class ConcreteStateB:public State { public:void Handle(Context *context);void GetState(); }; // 具体的状态子类 class ConcreteStateC:public State { public:void Handle(Context *context);void GetState(); };// cpp文件 #include StateMode.h void ConcreteStateA:: Handle(Context *context) {context-m_pState new ConcreteStateB;cout当前状态是A下一状态是Bendl; } void ConcreteStateB:: Handle(Context *context) {context-m_pState new ConcreteStateC;cout当前状态是B下一状态是Cendl; } void ConcreteStateC:: Handle(Context *context) {context-m_pState new ConcreteStateA;cout当前状态是C下一状态是Aendl; } void ConcreteStateA:: GetState() {cout当前状态是Aendl; } void ConcreteStateB:: GetState() {cout当前状态是Bendl; } void ConcreteStateC:: GetState() {cout当前状态是Bendl; } int main(int argc, char *argv[]) {// 初始化A状态Context* context new Context(new ConcreteStateA);context-Request();context-Request();context-Request();getchar();return 0; }
http://www.dnsts.com.cn/news/51051.html

相关文章:

  • 宽屏网站模板wordpress 内容排版
  • 承装承修承试材料在哪个网站做经典营销案例分析
  • 旅游网站开发参考文献wordpress做后端
  • 上海知名建站公司怎么进入网站后台管理系统
  • 防止服务器上的网站被进攻回龙观做网站
  • wordpress搭建的网站亚马逊雨林的原始部落
  • 优秀网站开发公司网站建设丷金手指专业十五
  • 网站建设市场报告网站首页做的好看
  • 南通企业网站建设搜索指数的数据来源
  • 张家港网站建设公司卓越 网站
  • 网站菜单怎么做番禺做网站
  • 阿里云服务器可以访问国外网站吗怎么申请自己的网站
  • 某网站开发项目进度表作文网app
  • 手机软件制作和做网站相同广东专业做网站排名哪家好
  • 顾氏网站建设有限公司怎么样手机在线作图
  • 外贸app网站开发形象标识设计
  • 企业网站后台内容如何修改网站集约化建设的意义
  • 银川网站建设是什么电子商务网站建设最好的公司
  • 云南域名注册网站建设网站开发用什么工具
  • php网站源码免费下载平面设计和网页设计哪个工资高
  • 论文网站建设临县网站建设
  • 网站优化文章网络营销的推广策略
  • 做团购的的网站有哪些中国建筑公司网站大全
  • 付费阅读网站建设做付费推广是网站好还是单页面好
  • 网站群 seo宁夏建设投资集团公司网站
  • 杭州高端网站设计免费企业网站建设要求
  • 关于网站平台建设调研的函北京代建网站
  • 找个不能粘贴文字的网站做实验下面什么不是用于制作网页的软件
  • 接收新网站如何做诊断购物网站开发环境
  • 微信小程序与网站连接潮阳网站制作