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

个人免费开发网站视频弹幕网站怎么做

个人免费开发网站,视频弹幕网站怎么做,临沂网站建设公司招聘,三室两厅两卫装修实景状态模式State 在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?“状态变化”模式为这一问题提供了一种解决方案。 经典模式:State、Memento 动机&#xff08…

状态模式State

在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?“状态变化”模式为这一问题提供了一种解决方案。

经典模式:State、Memento

动机(Motivation)

在软件构建过程中,某些对象的状态如何改变,其行为也随之而发生变化,比如文档处于只读状态,其支持的行为和读写状态支持的行为就可以完全不同。

如何在运行时根据对象的状态来透明地更改对象的行为?而不会为对象操作和状态转化之间引入耦合?

示例1


enum NetworkState
{Network_Open,Network_Close,Network_Connect,NetWork_Wait    // 新增状态
};class NetworkProcessor {NetworkState state_;public:void Operation1() {if (Network_Open == state_) {//***state_ = Network_Close;}else if(Network_Close == state_){//...state_ = Network_Connect;}else if (Network_Connect == state_) {//$$$state_ = Network_Open;}// 变化else if (NetWork_Wait == state_) {//---}}void Operation2() {if (Network_Open == state_) {//***state_ = Network_Connect;}else if (Network_Close == state_){//...state_ = Network_Open;}else if (Network_Connect == state_) {//$$$state_ = Network_Close;}// 变化else if (NetWork_Wait == state_) {//---}}void Operation3() {//...}
};

示例2


class NetworkState {
public:NetworkState* pNext;virtual void Operation1() = 0;virtual void Operation2() = 0;virtual void Operation3() = 0;virtual ~NetworkState() {}
};class OpenState : public NetworkState {static NetworkState* m_instance;public:static NetworkState* getInstance() {if (nullptr == m_instance) {m_instance = new OpenState();}return m_instance;}virtual void Operation1() {//***pNext = CloseState::getInstance();}virtual void Operation2() {//...pNext = ConnectState::getInstance();}virtual void Operation3() {//$$$pNext = OpenState::getInstance();}
};class CloseState : public NetworkState {static NetworkState* m_instance;public:static NetworkState* getInstance() {if (nullptr == m_instance) {m_instance = new CloseState();}return m_instance;}virtual void Operation1() {//***pNext = ConnectState::getInstance();}virtual void Operation2() {//...pNext = OpenState::getInstance();}virtual void Operation3() {//$$$pNext = CloseState::getInstance();}
};class ConnectState : public NetworkState {static NetworkState* m_instance;public:static NetworkState* getInstance() {if (nullptr == m_instance) {m_instance = new ConnectState();}return m_instance;}virtual void Operation1() {//***pNext = OpenState::getInstance();}virtual void Operation2() {//...pNext = CloseState::getInstance();}virtual void Operation3() {//$$$pNext = ConnectState::getInstance();}
};// 扩展
class WaitState : public NetworkState {//...
};class NetworkProcessor {NetworkState* state_;public:NetworkProcessor(NetworkState* state) {this->state_ = state;}void Operation1() {//...state_->Operation1();state_ = state_->pNext;//...}void Operation2() {//...state_->Operation2();state_ = state_->pNext;//...}void Operation3() {//...state_->Operation3();state_ = state_->pNext;//...}};

要点总结

State模式将所有与一个特定状态的相关的行为都放入一个State的子类对象中,在对象状态切换时,切换相应的对象;但同时维持State的接口,这样实现了具体操作与状态转换之间的解耦。

为不同的状态引入不同的对象使得状态转换变得更加明确,而且可怀疑保证不会出现状态不一致的情况,因为转换是原子性的---即要么彻底转换过来,要么不转换。

如果State对象没有实例变量,那么各个上下文可怀疑共享同一个State对象,从而节省对象开销。

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

相关文章:

  • 东营可以做网站的公司在哪win7家用电脑做网站服务器
  • 深圳网站关键字优化查询网址域名大全免费
  • 重庆交通大学官网网站google广告在wordpress
  • 昆明网站制作公司宁波快速建站公司
  • c#做交易网站在线注册免费域名
  • 济南联通网站备案网站改版费用
  • 网站文字公告代码深圳做手机的企业网站
  • 餐饮公司做网站好处jsp简述网站开发流程图
  • 织梦网站模板源码php洛阳网站设计开发
  • 怎么做仿制网站深圳代理注册公司哪家好
  • 榆次做网站荧光字体制作网站
  • 网站空间怎么登陆网站建设前期要多久
  • 专业的环保行业网站开发龙岗网站建设开发设计公司
  • 深圳网站建设认准乐云地产公司做网站维护写代码么6
  • 宜春市建设局网站网站建设工作目标
  • 站长工具官方网郑州市建设工程信息网官网
  • 建手机号码的网站wordpress 产品报价系统
  • 备案成功后怎么建网站网站开发中的著作权归属
  • 四川网站备案怎么用上线了做网站
  • 舟山网站开发网站是别人做的我这就没有根目录
  • 做网站上数字快速增加网站制作需要多少钱k
  • APP做网站长寿网站建设公司
  • 北京商城网站建设百度刷排名seo
  • 做守望先锋h的网站注册企业的流程有哪些
  • 广安发展建设集团门户网站深圳做微信网站制作
  • 电商网站产品设计优化技术主要是晋中市科技馆网站建设
  • php mysql网站后台源码wordpress导入导出
  • 网站建设捌金手指花总六顺德网页定制
  • iis7.5 网站配置电子商务网站建设调查分析
  • 工商银行与建设银行网站对比电脑大型网络游戏排行