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

济南网站开发推广郑州网站建设制作公司

济南网站开发推广,郑州网站建设制作公司,贵州省企业信用信息查询公示系统,优书网书库概念 状态模式是一种行为模式,用于在内部状态改变的时候改变其行为。它的核心思想就是允许一个对象在其内部状态改变的时候改变它的行为。状态模式通过将对象的状态封装成独立的类,并将其行为委托给当前的状态对象,从而使得对象行为随着状态…

概念

状态模式是一种行为模式,用于在内部状态改变的时候改变其行为。它的核心思想就是允许一个对象在其内部状态改变的时候改变它的行为。状态模式通过将对象的状态封装成独立的类,并将其行为委托给当前的状态对象,从而使得对象行为随着状态的改变而改变,使其看上去就像是类的一个属性一样。

适用场景

1、如果对象需要根据不同的状态进行不同的操作的,且状态较多并且代码需要复用的时,需要使用到状态模式。

2、如果某个类需要根据成员的状态改变自身的行为且需要大量的条件判断语句的时,可以使用该模式。

3、当相似的状态和基于条件的状态机转换中存在许多重复代码的时候,可以使用状态模式。

创建方式

1、使用状态模式的时候需要首先创建一个状态类、上下文类。

2、创建一个状态类接口对象,在这个接口对象中需要创建一个上下文指针对象,并创建一个设置上下文的接口和所有的状态操作函数。

3、创建实际的状态类对象,在实际的状态类对象实现具体的操作函数方法,在此方法中实现状态的切换。

4、实现上下文类,在上下文状态类中实现状态类的指针对象引用,并实现一个切换函数在此函数中将当前状态设置给当前上下文。然后实现上下文的操作函数。在上下文的操作函数中通过状态引用对象调用状态的操作函数。

5、在客户端的使用的时候,首先创建一个初始转台对象,之后创建一个上下文对象,并将状态对象设置个上下文,之后通过调用上下文中的操作函数进行状态切换和状态的操作函数。

类关系图

在这里插入图片描述

示例代码

#include "ZhuangTaiMoShi.h"
int main()
{std::cout << "欢迎东哥来到设计模式的世界!\n";//创建状态StateBase* state1 = new State1();StateBase* state2 = new State2();//创建上下文对戏Context* context = new Context();context->switchState(state1);context->deputeHandle1();context->deputeHandle2();context->switchState(state2);context->deputeHandle1();context->deputeHandle2();
}
#pragma once
#include <string>
#include <iostream>using namespace std;
class Context;//状态接口类
class StateBase
{
public:StateBase() {}~StateBase() {}virtual void handle1() {}virtual void handle2() {}
};//具体状态接口类
class State1 : public StateBase {
public:State1() {}~State1() {}void handle1() {cout << "状态1操作函数1:第一队右侧迂回" << endl;}void handle2() {cout << "状态1操作函数2:第而队左侧突击" << endl;}
};class State2 : public StateBase {
public:State2() {}~State2() {}void handle1() {cout << "状态2操作函数1:先锋队冲锋" << endl;}void handle2() {cout << "状态2操作函数2:狙击手掩护" << endl;}
};//上下文对象类
class Context {
public:Context() {}~Context() {}void switchState(StateBase* state) {m_state = state;}void deputeHandle1() {m_state->handle1();}void deputeHandle2() {m_state->handle2();}
private:StateBase* m_state = nullptr;
};
欢迎东哥来到设计模式的世界!
状态1操作函数1:第一队右侧迂回
状态1操作函数2:第而队左侧突击
状态2操作函数1:先锋队冲锋
状态2操作函数2:狙击手掩护
http://www.dtcms.com/wzjs/347597.html

相关文章:

  • Wordpress网站开发收费seo标题优化是什么意思
  • 个人网站设计结构图站长之家ping检测
  • 招聘网站做两份简历网络工程师培训机构排名
  • 刘家窑网站建设百家号seo
  • 狗和女主人做爰网站百合seo培训
  • 正规手机网站怎么做西安百度百科
  • 还有那个网站平台做化妆品批发的怎么自己制作网站
  • 如何做网站营销凡科网站建站教程
  • 软件服务网站设计费如何做分录苹果cms永久免费全能建站程序
  • 淄博桓台网站建设报价推广产品的软文
  • 网站建设价格对比单产品seo怎么优化
  • 工业和信息化部网站备案百度网站推广电话
  • 网站开发的五个阶段seo国外推广软件
  • wordpress主题制作台州网站seo
  • 泸州做网站的公司有哪些关键帧
  • 深圳独立站建站快速优化seo
  • 网站定制那个好上海热点新闻
  • 沈阳做企业网站seo网络推广技术
  • 建个企业网站需要多久天津seo网络
  • 十大国外新闻网站seo品牌
  • h5网站动画怎么做网络营销策划的流程
  • 武汉网站设计公司官网青岛网站优化公司哪家好
  • 动漫做视频在线观看网站郑州seo顾问外包公司
  • 建设银行无锡分行网站网站点击排名优化
  • 网站的建设建议中国十大营销策划公司排名
  • 做网站的属于什么专业今日军事新闻头条视频
  • 商业网站的规划和设计西安百度首页优化
  • 衢州做网站公司域名解析查询工具
  • 对网站做维护搜索引擎优化seo
  • 竞网做的网站怎么seo有哪些优缺点?