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

全球贸易平台湖南seo推广服务

全球贸易平台,湖南seo推广服务,php网站挂马,关于建设网站的外国参考文献上图为例,按上述两种方式实现的模式跳转,如果在原先的三种模式之间再增加多一种模式,就会引起每个模式都会要求改变,并且逻辑混乱,因此更改模式为桥接中介者访问,将抽象和实现分离,实现之间采用…

上图为例,按上述两种方式实现的模式跳转,如果在原先的三种模式之间再增加多一种模式,就会引起每个模式都会要求改变,并且逻辑混乱,因此更改模式为桥接+中介者访问,将抽象和实现分离,实现之间采用中介者实现模式之间的通信,或者在实现中去管理每个模式之间的通信。方便后续扩展:


class MaWorkState;
typedef enum _childMastate {RUN = 0,STOP,RUNNING,STATE_QTY,
}childMastate;
typedef bool(MaWorkState::* Statefunc)(void);typedef std::function<bool(void)> pcb;
class StateSwitching {
public:StateSwitching() {};virtual void DoSate(){while (!m_pcontext.empty()){m_deque.at(m_pcontext.at(0));m_pcontext.pop_front();}}template<typename Ty>void PushEvent(Ty ev){m_pcontext.push_back(ev);}
protected:std::deque<int> m_pcontext;std::deque<pcb> m_deque;ModuleNormalOutput* m_ModuleNormalOutput;DdsWaveHandle* m_pDds;
};/*  
class mediator;class StateSwitching {
public:StateSwitching() {};virtual void GenMediator(mediator* media) { m_mediator = media; };virtual bool ReleaseMode() {};   //这样:不管增加多少模式,都只是实现自己的两个接口就可以,但必须将模式之间的交互隔离,模式之间不产生联系,如果出现关联,抽线一层(使用一个中介者实现关联)virtual bool CtrlMode() {};
protected:std::deque<int> m_pcontext;std::deque<pcb> m_deque;mediator* m_mediator;
};class mediator {
public:virtual void realese(StateSwitching*child1, StateSwitching*child2) =0;virtual void ctrl(StateSwitching* child1, StateSwitching* child2) =0;
};class GenMediatorChild :public mediator {
public:GenMediatorChild():m_swith1(NULL), m_swith2(NULL) {};virtual void realese(StateSwitching* child1, StateSwitching* child2) {};virtual void ctrl(StateSwitching* child1, StateSwitching* child2) {};StateSwitching* m_swith1;StateSwitching* m_swith2;
};
*/class NormalStateSwitching :public StateSwitching {
public:typedef enum NormalState{LIST_TO_NORMAL = 0,SOLAR_TO_NORMAL,};NormalStateSwitching() {m_deque.resize(4);//m_deque.push_back(std::bind(&NormalStateSwitching::OnListtoNormal,this));m_deque.at(LIST_TO_NORMAL) = std::bind(&NormalStateSwitching::OnListtoNormal, this);m_deque.at(SOLAR_TO_NORMAL) = std::bind(&NormalStateSwitching::OnListtoNormal, this);};bool OnListtoNormal(void){return true;}bool OnSolartoNormal(void){return true;}
};class SolarStateSwitching :public StateSwitching {   //当增加多一个模式,每一个状态的跳转都需要增加,考虑怎么优化  //换一种实现方式:将自己正在执行的状态在切换模式的时候,针对自己的状态释放//需要执行的模式做加载,那么每一个模式就只有release,ctrl接口
public:typedef enum SolarState{LIST_TO_SOLAR = 0,NORMAL_TO_SOLAR,};SolarStateSwitching() {m_deque.resize(4);//m_deque.push_back(std::bind(&NormalStateSwitching::OnListtoNormal,this));m_deque.at(LIST_TO_SOLAR) = std::bind(&SolarStateSwitching::OnListtoSolar, this);m_deque.at(NORMAL_TO_SOLAR) = std::bind(&SolarStateSwitching::OnNormaltoSolar, this);};bool OnListtoSolar(void){return true;}bool OnNormaltoSolar(void){return true;}
};class MaWorkState
{
public:MaWorkState(StateSwitching* state) :m_StateSwitching(state) {m_FuncState[RUN] = &MaWorkState::start;m_FuncState[STOP] = &MaWorkState::stop;m_FuncState[RUNNING] = &MaWorkState::running;};~MaWorkState() {};virtual bool DoWorkPrepare(int smode) {return true;}virtual bool DoWorkDone(childMastate py) {m_StateSwitching->DoSate();(this->*m_FuncState[py])();return true;}
protected:virtual bool start(void) = 0;virtual bool stop(void) = 0;virtual bool running(void) = 0;ModuleNormalOutput* m_ModuleNormalOutput;DdsWaveHandle* m_pDds;RUN_MODE m_mode;
public:Statefunc m_FuncState[STATE_QTY];StateSwitching* m_StateSwitching;
};class MaNormalStart :public MaWorkState
{
public:MaNormalStart(StateSwitching* state) :MaWorkState(state) {m_mode = NORM_MODE;};virtual bool DoWorkPrepare(RUN_MODE smode) {          //当前用户切换了工作模式       if(m_mode!=smode)m_StateSwitching->PushEvent<NormalStateSwitching::NormalState>(NormalStateSwitching::NormalState(smode));return true;}
protected:virtual bool start(void) {printf("normalstart\n"); return true;};virtual bool stop(void) { return true; };virtual bool running(void) { return true; };
private:};class SolarStart :public MaWorkState
{
public:SolarStart(StateSwitching* state) :MaWorkState(state) {m_mode = SOLAR_MODE;};virtual bool DoWorkPrepare(RUn_MODE smode) { return true; }
protected:virtual bool start(void) {printf("SolarStart\n"); return true;};virtual bool stop(void) { return true; };virtual bool running(void) { return true; };
private:};class ListStart :public MaWorkState
{
public:ListStart(StateSwitching* state) :MaWorkState(state) {m_mode = LIST_MODE;};virtual bool DoWorkPrepare(RUN_MODE smode) { return true; }
protected:virtual bool start(void) {printf("SolarStart\n"); return true;};virtual bool stop(void) { return true; };virtual bool running(void) { return true; };
private:WAVE_LIB_TYPE m_eLibType;
};int main()
{std::deque<MaWorkState*> m_deque;m_deque.push_back(new MaNormalStart(new NormalStateSwitching()));m_deque.push_back(new SolarStart(new SolarStateSwitching()));m_deque.push_back(new ListStart(new ListStateSwitching()));//增加多一个cell模式,只需要增加CellStart,和CellStateSwitching类,用户调用接口不变//m_deque.push_back(new CellStart(new CellStateSwitching()));m_deque.at(m_eRunmode)->DoWorkPrepare(m_SysCtrlMode);  //用户设置模式m_SysCtrlMode,上一次记录的模式m_eRunmodem_deque.at(m_eRunmode)->DoWorkDone(RUN);               //当前模式需要操作的状态
}

http://www.yidumall.com/news/96173.html

相关文章:

  • 柳城企业网站制作哪家好seo分析网站
  • 网站后台如何做下载连接视频号链接怎么获取
  • 网站建设最好的公司上海专业优化排名工具
  • 织梦网站转跳手机站建站seo推广
  • 网站没备案可以做淘宝客吗新手电商运营从哪开始学
  • 做服务型党员网站新品推广活动方案
  • 校园网建设网站特色seo公司网站推广
  • 如何做徽商网站武汉seo排名公司
  • 做游戏奖金不被发现网站长春网站关键词排名
  • wordpress cms怎么登陆西安seo外包平台
  • 山东网站建设哪家有百度帐号登录入口
  • 长春关键词优化报价惠州seo外包服务
  • 关于校园图书馆网站建设seo快速排名系统
  • 建设一个购物网站要多少钱社会新闻热点事件
  • 易云巢做网站公司河北百度seo关键词
  • 马上飞做的一些网站seo 360
  • 哪个网站做简历比较好国际新闻报道
  • 成都设计公司地址网站推广优化平台
  • 外贸电商网站设计网站建设价格
  • 阿里云网站建设的步骤过程企业推广软件
  • 网站公司备案有用t和p在一起怎么做网站
  • 做网站一定要自己搭建服务器吗百度热门
  • 博纳网站建设百度口碑网
  • 成都手机wap网站制作上往建站
  • 软通动力和中软国际对比西安seo和网络推广
  • 建设部网站职业资格证查询兰州网络推广新手
  • 广东东莞长安疫情最新情况关键词推广优化外包
  • 有啦域名网站怎么做百度官网链接
  • 保定制作公司网站株洲做网站
  • 好看又刺激不封号的直播seo好找工作吗