标签:gcd bec ret soa cms pvs self urb arm
模式定义:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。
模式结构:
 
在状态模式结构中需要理解环境类与抽象状态类的作用:
实例:
from abc import ABCMeta, abstractmethod
class Context:
    """环境角色"""
    def __init__(self):
        self._state = None
    def set_state(self, state_interface):
        self._state = state_interface
    def request(self,sample_parameter):
        self._state.handle(sample_parameter)
class StateInterface(metaclass=ABCMeta):
    @abstractmethod
    def handle(self,sample_parameter):
        """
        :param sample_parameter:
        :return:
        """
class ConcreteStateA(StateInterface):
    def handle(self,sample_parameter):
        print("ConcreteStateA handle:"+sample_parameter)
class ConcreteStateB(StateInterface):
    def handle(self,sample_parameter):
        print("ConcreteStateB handle:"+sample_parameter)
if __name__ == "__main__":
    context = Context()
    concrete_state_a = ConcreteStateA()
    concrete_state_b = ConcreteStateB()
    context.set_state(concrete_state_a)
    context.request("parama")
    context.set_state(concrete_state_b)
    context.request("paramb")
总结:上述实例将状态处理方式的选择逻辑写在client中,但很多实例是将状态处理方式的选择逻辑配置在一个context中,一旦配置完毕,就不再需要和状态对象打交道了。客户端通常不负责运行期间状态的维护,也不负责决定后续到底使用哪一个具体的状态处理对象。
标签:gcd bec ret soa cms pvs self urb arm
原文地址:https://www.cnblogs.com/zenan/p/10372898.html