标签: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