zoukankan      html  css  js  c++  java
  • 状态模式

      状态模式允许对象在内部状态改变时改变它的行为,对象看起来像是修改了它的类。

      状态模式将状态封装成独立的类,并将动作委托到代表当前状态的对象。

      “看起来像是修改了它的类”:从客户的视角来看,如果说你使用的对象,能够完全改变它的行为,那么你会觉得,这个类是从别的地方实例化来的。然而实际上,这是在使用组合,通过简单引用不同的状态对象来造成类改变的假象。

      状态模式与策略模式之比较:

      状态模式将一群行为封装在状态对象中,context的行为随时可以委托到那些状态对象中的一个。随着时间的流逝,当前状态在对象集合中游走改变,以反映出context内部的状态,所以context的行为也会跟着改变。我们可以将状态模式想象成不用在context中放置许多条件判断的替代方案。

      策略模式 客户通常主动指定context所要组合的策略对象是哪一个,现在,固然策略模式让我们具有弹性,能够在运行时改变策略但对于某个context对象来说,通常都只有一个最适当的策略对象。我们可以将策略模式想象成除了继承之外的一种弹性替代方案。

      该模式相对而言不是很难理解,这里写个大致思路,就不写代码了。。。

      1. 定义一个状态接口(IState),在这个接口里面定义所有的行为(MethodA,MethodB,MethodC。。。);

      2. 编写状态类实现上述定义的接口,每个类负责自己的行为,比如ClassA实现行为MethodA。。。并且在具体条件下(执行的某个会触发状态改变的行为)改变状态;

      3. 将行为委托给对应的状态对象处理。

  • 相关阅读:
    2019 SDN上机第5次作业
    SDN课程阅读作业(2)
    第05组 Alpha事后诸葛亮
    Ryu控制器编程开发——packet_in和packet_out简易交换机实现
    Ryu控制器安装部署和入门
    OpenDayLight Beryllium版本 下发流表实现hardtimeout
    Raspberry Pi 4B FTP服务器配置
    利用Wireshark抓取并分析OpenFlow协议报文
    基于OVS命令的VLAN实现
    利用Python脚本完成一个Fat-tree型的拓扑
  • 原文地址:https://www.cnblogs.com/hachun/p/3622889.html
Copyright © 2011-2022 走看看