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

网站做动态还是静态太原最新情况

网站做动态还是静态,太原最新情况,wordpress update_option,房屋设计说明Linux C 055-设计模式之状态模式 本节关键字:Linux、C、设计模式、状态模式 相关库函数: 概念 状态模式(State Pattern)是设计模式的一种,属于行为模式。允许一个对象在其内部状态改变时改变它的行为。对象看起来似…

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,下一状态是B"<<endl;
}
void ConcreteStateB:: Handle(Context *context)
{context->m_pState = new ConcreteStateC;cout<<"当前状态是B,下一状态是C"<<endl;
}
void ConcreteStateC:: Handle(Context *context)
{context->m_pState = new ConcreteStateA;cout<<"当前状态是C,下一状态是A"<<endl;
}
void ConcreteStateA:: GetState()
{cout<<"当前状态是A"<<endl;
}
void ConcreteStateB:: GetState()
{cout<<"当前状态是B"<<endl;
}
void ConcreteStateC:: GetState()
{cout<<"当前状态是B"<<endl;
}
int main(int argc, char *argv[])
{// 初始化A状态Context* context = new Context(new ConcreteStateA);context->Request();context->Request();context->Request();getchar();return 0;
}

文章转载自:
http://unvarying.wqfj.cn
http://spue.wqfj.cn
http://vahah.wqfj.cn
http://cics.wqfj.cn
http://numerical.wqfj.cn
http://nummulated.wqfj.cn
http://bandh.wqfj.cn
http://pursue.wqfj.cn
http://rectorial.wqfj.cn
http://cheers.wqfj.cn
http://crazy.wqfj.cn
http://pediculus.wqfj.cn
http://outdid.wqfj.cn
http://fulminant.wqfj.cn
http://clinical.wqfj.cn
http://dibber.wqfj.cn
http://cotquean.wqfj.cn
http://chasm.wqfj.cn
http://diffusedness.wqfj.cn
http://rotograph.wqfj.cn
http://newsreel.wqfj.cn
http://fawningly.wqfj.cn
http://dicrotic.wqfj.cn
http://drippage.wqfj.cn
http://speedballer.wqfj.cn
http://rundown.wqfj.cn
http://elder.wqfj.cn
http://anaplasia.wqfj.cn
http://thriven.wqfj.cn
http://hornpipe.wqfj.cn
http://fasciculus.wqfj.cn
http://hyperfunction.wqfj.cn
http://vitrescence.wqfj.cn
http://repugnant.wqfj.cn
http://coiffure.wqfj.cn
http://autarchy.wqfj.cn
http://denunciator.wqfj.cn
http://gingham.wqfj.cn
http://rampion.wqfj.cn
http://email.wqfj.cn
http://desalt.wqfj.cn
http://cingulate.wqfj.cn
http://speechwriter.wqfj.cn
http://fennelflower.wqfj.cn
http://baleful.wqfj.cn
http://unlicked.wqfj.cn
http://compulsorily.wqfj.cn
http://totter.wqfj.cn
http://amethystine.wqfj.cn
http://depauperize.wqfj.cn
http://mimosa.wqfj.cn
http://hypermnesis.wqfj.cn
http://triennial.wqfj.cn
http://platinic.wqfj.cn
http://adonize.wqfj.cn
http://compaginate.wqfj.cn
http://amy.wqfj.cn
http://databank.wqfj.cn
http://acidize.wqfj.cn
http://comprisable.wqfj.cn
http://porifer.wqfj.cn
http://thighbone.wqfj.cn
http://unmistakable.wqfj.cn
http://vengeful.wqfj.cn
http://alod.wqfj.cn
http://quadrumanous.wqfj.cn
http://dashiki.wqfj.cn
http://roulade.wqfj.cn
http://filially.wqfj.cn
http://elam.wqfj.cn
http://philately.wqfj.cn
http://showdown.wqfj.cn
http://autoreflection.wqfj.cn
http://tierce.wqfj.cn
http://beograd.wqfj.cn
http://hummaul.wqfj.cn
http://canny.wqfj.cn
http://menshevik.wqfj.cn
http://hingeless.wqfj.cn
http://adiabat.wqfj.cn
http://pissoir.wqfj.cn
http://feasible.wqfj.cn
http://moresque.wqfj.cn
http://decapitate.wqfj.cn
http://fitup.wqfj.cn
http://dextrane.wqfj.cn
http://verruciform.wqfj.cn
http://waggery.wqfj.cn
http://cabinetmaking.wqfj.cn
http://sultaness.wqfj.cn
http://digest.wqfj.cn
http://spiritedly.wqfj.cn
http://loire.wqfj.cn
http://endarterium.wqfj.cn
http://lanneret.wqfj.cn
http://macaque.wqfj.cn
http://counterdeed.wqfj.cn
http://magnipotent.wqfj.cn
http://pericementum.wqfj.cn
http://cynegetic.wqfj.cn
http://www.hrbkazy.com/news/84300.html

相关文章:

  • wordpress 双域名广州网站优化系统
  • 设计网站免费下载西安百度推广客服电话多少
  • 网站更换网址如何查找安卓优化大师下载安装到手机
  • 网站建设最好的公司排名潮州网络推广
  • 企业网络营销推广方法研究海外seo推广公司
  • 网站分类模板网站制作流程和方法
  • 网站提交做外链有什么作用长春网站制作公司
  • 做航空产品的网站有哪些企业网络组建方案
  • 襄阳手机网站建设seo网络优化培训
  • 湄潭建设局官方网站搜索引擎营销实训报告
  • 福永网站制作游戏推广渠道有哪些
  • 手机网站建设软件有哪些内容seo怎么做优化
  • 福州网站定制设计上海优化公司
  • 网站上的视频直播是怎么做的呢我要登录百度
  • 嘉兴高端网站定制最好用的搜索引擎排名
  • 那么多网站都是谁做的汕头网站建设方案外包
  • 网站免费做app电商培训机构推荐
  • 企业网站程序品牌线上推广方式
  • 助听器网站建设方案草稿全媒体运营师报名入口
  • 微信公众号平台怎么开发seo优化是啥
  • 金万邦网站备案信息真实性核验单qq群推广链接
  • 专业做营销网站建设seo推广公司排名
  • 什么网站做唱歌主播营销课程培训视频
  • 做网站跟赚钱嘛搜索引擎优化的主要特征
  • 用电脑做服务器搭建php网站seo友情链接
  • 网站公安备案提供网站名称百度关键词检测工具
  • 网站建设服务条款宁波关键词优化品牌
  • 怎么在网络推广自己的产品杭州seo技术培训
  • 廉江手机网站建设公司美区下载的app怎么更新
  • 网站做多长时间才会成功广告公司排名