设计模式阅读笔记(12)--------------状态模式

状态模式:允许对象在内容状态改变时改变它的行为,对象看起来好像修改了它的类。

状态模式还是比较有意思的,将类在不同状态下的行为封装成一个类,在不同状态下调用对应状态类的方法,这样看起来似乎类在不断的变化,而且当要修改状态的行为时,也不用去修改原来的容器类。

设计模式阅读笔记(12)--------------状态模式

Context中可以有多个state,图中为了简便就没有画出来了,currentState是当前状态的引用,指向某个state属性,当客户调用request方法的时候呢,context执行currentState的handle方法,通过转换currentState指向不同的stateA,B,就可以执行不同的handle,看起来Context仿佛在变化一样。

状态模式和策略模式比较类似,都可以将类的行为独立出去,但是效果是不同的,策略模式的行为可以动态的改变,状态模式的context的状态,应该是运行前就设计好的。策略模式针对的是行为,而状态模式针对的是状态,由于状态会导致不同的行为,所以这两者非常相似。