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