状态模式:State Pattern、行为型模式
状态模式允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。
状态模式核心在于 状态与行为绑定,不同的状态对应不同的行为
状态模式应用场景
1、行为随状态改变而改变的场景
2、一个操作中含有庞大的分支结构,并且这些分支取决于对象的状态。
状态模式的优缺点
优点:
1、结构清晰:将状态独立为类,去除过多的 if...else语句,使代码简洁
2、将状态显示化:切换状态时,是以不同的类进行表示,转换目的更加明确
3、状态类职责明确,且具有很强的扩展性。
缺点:
1、类膨胀,如果一个类具备很多状态,则会造成状态类很多
2、对开闭原则支持不是很友好,增加新类需要修改那些负责状态转化的源代码
状态模式源码应用
1、JSF 中的 Lifecycle
ps:状态模式具体应用在源码中非常少见