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

网站前端设计与制作网站建设需要哪些人

网站前端设计与制作,网站建设需要哪些人,html5自学教程,欧美网站设计风格定义 允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。 应用场景 在软件构建过程中,某些对象的状态如果改变,其行为也会随之,而发生变化,比如文档处于只读状态,其支持的行为和读写…

定义

允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。

应用场景

  • 在软件构建过程中,某些对象的状态如果改变,其行为也会随之,而发生变化,比如文档处于只读状态,其支持的行为和读写状态支持的行为就可能完全不同。
  • 如何在运行时根据对象的状态来透明地更改对象的行为?而不会为对象操作和状态转化之间引入紧耦合?

结构

在这里插入图片描述

代码示例

//State.h
/****************************************************/
#ifndef STATE_H
#define STATE_H
#include <iostream>
using namespace std;
class Lamp;// 抽象状态类
class State 
{
public:// 析构函数virtual ~State() {}// 操作函数virtual void handle(Lamp& context) = 0;};// 具体状态类-开
class StateOn : public State 
{
public:// 操作函数virtual void handle(Lamp& context);};// 具体状态类-关
class StateOff : public State 
{
public:// 操作函数virtual void handle(Lamp& context);};// 灯
class Lamp
{
public:// 构造函数,默认状态关闭Lamp() : m_state(new StateOff()){}// 析构函数~Lamp();// 设置状态void setState(State* state);// 请求void request();private:State* m_state;
};// 操作函数
void StateOn::handle(Lamp& context) {cout << "当前状态:打开" << endl;cout << "执行操作:关闭" << endl;context.setState(new StateOff());
}// 操作函数
void StateOff::handle(Lamp& context) {cout << "当前状态:关闭" << endl;cout << "执行操作:打开" << endl;context.setState(new StateOn());
}// 析构函数
Lamp::~Lamp() {if (m_state) {delete m_state;m_state = nullptr;}
}// 设置状态
void Lamp::setState(State* state) {if (m_state) {delete m_state;m_state = nullptr;}m_state = state;
}// 请求
void Lamp::request() {m_state->handle(*this);
}#endif
//test.cpp
/****************************************************/
#include "State.h"int main()
{Lamp lamp;lamp.request(); // 操作灯lamp.request(); // 操作灯return 0;
}

运行结果
在这里插入图片描述

要点总结

  • State模式将所有与一个特定状态相关的行为都放入一个State的子类对象中,在对象状态切换时,切换相应的对象;但同时维持State的接口,这样实现了具体操作与状态转换之间的解耦。
  • 为不同的状态引入不同的对象使得状态转换变得更加明确,而且可以保证不会出现状态不一致的情况,因为转换是原子性的——即要么彻底转换过来,要么不转换。
  • 如果State对象没有实例变量,那么各个上下文可以共享同一个State对象,从而节省对象开销。
http://www.yayakq.cn/news/644633/

相关文章:

  • 个人网站下载衡东网络推广公司
  • wordpress 查看版本号seo推广策划
  • 深圳pc端网站开发公司网站招聘的作用
  • 伍佰亿网站怎么做做网站网站犯法吗
  • 从哪里可以建公司网站杭州seo技术
  • 文档共享网站建设安装wordpress插件目录下
  • 网站开发行业代码百度的相关搜索
  • 怎么建立网站卖东西南昌优化网站推广
  • 949公社最新招聘今天网站关键词优化案例
  • 网站开发流程任务wordpress app 接口
  • 怎么增加网站的反链商业空间设计有限公司
  • 网站建设流程图片家具东莞网站建设
  • 网站可信度必须做吗想做电商怎么入手视频
  • 凡客vancl的网站标题毕业设计网站设计
  • 黑龙江网站备案怎样注册网站做销售
  • 创建销售网站多少钱wordpress防cc攻击
  • 商务类网站网站维护中 源码
  • 网站推广优化哪家公司好wordpress 主题太大了
  • 手机怎么创建网站崇义县网站建设
  • 做面包的网站参考消息网
  • 网站如何做流媒体做测评的网站
  • 佛山网站设计培训平面设计图案
  • 正规网站建设公司多少钱做网站的外包公司有哪些
  • 主播网站怎么建立poedit pro wordpress
  • 药品行业做网站校园网站建设价格
  • 定制高端网站建设通信科技网站设计
  • 临沂手机网站信息推广技术公司电话网页版游戏排行榜田田田田田田田田
  • 商城网站怎样做wordpress讯虎
  • 网站建设技术文档小红书如何引流推广
  • 莆田做网站建设兰州软件开发公司