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

网页设计制作教程dw张店专业网站优化哪家好

网页设计制作教程dw,张店专业网站优化哪家好,搜索引擎营销的缺点,哪个公司建设网站1.概述 状态模式是一种行为设计模式#xff0c; 让你能在一个对象的内部状态变化时改变其行为#xff0c; 使其看上去就像改变了自身所属的类一样。 2.结构 State(抽象状态类)#xff1a;定义一个接口用来封装与上下文类的一个特定状态相关的行为#xff0c;可以有一个或多…1.概述 状态模式是一种行为设计模式 让你能在一个对象的内部状态变化时改变其行为 使其看上去就像改变了自身所属的类一样。 2.结构 State(抽象状态类)定义一个接口用来封装与上下文类的一个特定状态相关的行为可以有一个或多个行为。ConcreteState(具体状态类)作为抽象状态类的子类每个子类实现一个与上下文类的一个状态相关的行为。每个具体状态类对应上下文类的一个具体状态不同的具体状态类其行为有所不同。Context(上下文类)上下文类中维护一个具体状态的实例通常有多种状态负责具体状态的切换。 3.实现  3.1 实例类比 在日常生活和工作开发中都有状态的问题。你如说马路上的红绿灯这三个灯光就属于三种状态。再比如说我使用的文档系统通常有草稿、审阅和批发部三种状态。 在以往的概念里我们都会使用if...esle这类语句进行设计但是这种设计一旦后期的需求发生了改变那么维护起来相当的复杂 一个 文档Document类。 文档可能会处于 草稿Draft 、 ​ 审阅中Moderation和 已发布Published三种状态中的一种。 文档的 publish发布方法在不同状态下的行为略有不同 处于 草稿状态时 它会将文档转移到审阅中状态。处于 审阅中状态时 如果当前用户是管理员 它会公开发布文档。处于 已发布状态时 它不会进行任何操作。   3.2 具体实现 #include iostream #include typeinfoclass Context;//抽象状态类 class State {protected:Context *context_;public:virtual ~State() {}void set_context(Context *context) {this-context_ context;}virtual void Status() 0;virtual void Handle() 0; };//上下文类 class Context {private:State *state_;public:Context(State *state) : state_(nullptr) {this-TransitionTo(state);}~Context() {delete state_;}void TransitionTo(State *state) {std::cout Context: Transition to typeid(*state).name() .\n;if (this-state_ ! nullptr)delete this-state_;this-state_ state;this-state_-set_context(this);}void Request1() {this-state_-Status();}void Request2() {this-state_-Handle();} };//已发布状态 class PublishedState : public State { public:void Status() override {std::cout 处于已发布状态.\n;}void Handle() override {std::cout 结束...\n;} };//审阅中状态 class ModerationState : public State { public:void Status() override {std::cout 处于审阅中状态.\n;};void Handle() override {this-context_-TransitionTo(new PublishedState);} };//草稿状态 class DraftState : public State { public:void Status() override {std::cout 处于草稿状态.\n;};void Handle() override {this-context_-TransitionTo(new ModerationState);} };/*** The client code.*/ void ClientCode() {Context *context new Context(new DraftState);context-Request1();context-Request2();//context-Request1();context-Request2();//context-Request1();context-Request2();delete context; }int main() {ClientCode();return 0; } 3.3运行结果 4.状态设计模式优缺点 优点 通常对有状态的对象进行编程我们的解决方案是思考可能存在的所有状态然后使用 if-else 或 switch-case 语句来进行状态判断然后再根据不同的状态进行不同的处理。 大量的if...else的缺点很明显 违背开闭原则: 当增加一种状态的时候, 需要修改原来的逻辑当状态很多的时候, 代码段很长, 臃肿, 不容易维护, 可扩展性差. 状态模式可以很好地解决这个问题。封装了转换规则消除了 if-else、switch-case 等条件判断语句代码更有层次性且具备良好的扩展力, 可维护性。 缺点 状态模式的使用必然会增加系统类和对象的个数。状态模式的结构与实现都较为复杂如果使用不当将导致程序结构和代码的混乱。状态模式对开闭原则的支持并不太好对于可以切换状态的状态模式增加新的状态类需要修改那些负责状态转换的源代码否则无法切换到新增状态而且修改某个状态类的行为也需修改对应类的源代码。 5.应用场景 一个操作中含有庞大的多分支结构并且这些分支取决于对象的状态。对象的行为依赖于它的状态例如某些属性值状态的改变将导致行为的变化。
http://www.pierceye.com/news/302037/

相关文章:

  • 网站说服力在百度上怎么建立网站
  • 医疗网站模板下载qq音乐的网站建设信息
  • 商务网站开发的的基本流程网站 设计 趋势
  • php mysql网站开发实例卖货平台排名前十
  • 房地产管理局网站建设银行北京市分行网站
  • 无锡哪家网站做的好黄骅市人事考试网
  • 芜湖seo网站优化淘宝官网首页手机版
  • 用付费网站做推广ui网站一般建好大
  • 四川建设行业网站有哪些最新体育新闻头条
  • 湘潭网站优化公司wordpress会员积分邀请
  • 腾讯网静态网站建设西宁网站建设公司排行
  • pc网站优势买完网站怎么建设
  • 网站设计与制作用什么软件外包加工网官网下载安装
  • 商城网站设计企业建一个o2o网站
  • 营销型网站创建php源码资源网
  • 优秀设计师网站在上海做兼职去哪个网站搜索
  • 教育行业网站建设房屋3d立体设计软件
  • 海珠免费网站建设php网站系统
  • 建设银行网站信息补充施工企业奖惩制度范本
  • 做拍卖网站多少钱办公室装修铺哪种地板
  • 国外网站有哪些平台网站系统建设需要什么资质
  • 做网站 就上凡科网做盗版网站会坐牢吗
  • 百事通网做网站做网站公众号多少钱
  • 影视作品网站开发与设计php做网站有哪些好处
  • 寻模板网站源码《基层建设》官方网站
  • 做网站龙岗深圳市网络seo推广平台
  • 公司资质查询官方网站网站建设开题报告
  • 桐城网站开发网站制作器手机版下载
  • 校友网站 建设网站开发都是使用框架吗
  • 手机网站字体大小规范优秀网站