大话设计模式
字体: 16 + -

第165章

小a:“状态模式的实质是什么?”

大b:“使用状态模式前,客户端外界需要介入改变状态,而状态改变的实现是琐碎或复杂的。使用状态模式后,客户端外界可以直接使用事件event实现,根本不必关心该事件导致如何状态变化,这些是由状态机等内部实现。这是一种event-condition-state,状态模式封装了condition-state部分。每个状态形成一个子类,每个状态只关心它的下一个可能状态,从而无形中形成了状态转换的规则。如果新的状态加入,只涉及它的前一个状态修改和定义。”

小a:“都有些什么方法实现状态转换?”

大b:“一个在每个状态实现next(),指定下一个状态;还有一种方法,设定一个stateowner,在stateowner设定stateenter状态进入和stateexit状态退出行为。状态从一个方面说明了流程,流程是随时间而改变,状态是截取流程某个时间片。”