定义:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。
主要解决
:当控制一个对象状态的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。
意图:允许一个对象在其内部状态改变时改变它的行为
适用场景:
1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。
2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。
状态和策略模式的异同点:
利用多态把一些操作分配到一组相关的简单的类中
对状态进行建模时,状态迁移是一个核心内容,策略模式允许一个客户选择或提供一种策略
在状态模式中,状态的变迁是由对象的内部条件决定,外界只需关心其接口,不必关心其状态对象的创建和转化;而策略模式里,采取何种策略由外部条件(C)决定