状态模式
2019-04-10 本文已影响0人
fanren
定义
- 当一个对象的内在状态改变时,允许改变其行为;
状态:类似于wifi状态;
行为:音响手机数据的传输 - 这个对象看起来是改变了类
不同的状态,调用相同的功能,最终的效果不一样;
应用场景
- 一个对象的行为取决于他的状态,并且必须在运行时,根据状态改变它的行为
- 程序代码中包含大量与对象状态有关的条件语句
ps:状态模式将每一个条件分支放到一个独立的类中,这使得你可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象而独立变化,这样通过多态来去除过多的、重要复杂的if-else等分支语句;
角色分析
- 角色一:抽象状态:StateProtocol
- 角色二:具体状态:ConcrateState
- 角色三:状态管理器(上下文):Context
案例
- 以电视遥控器为例,分为两种状态:打开和关闭
在两种状态下,切换频道和音量
demo - 我们在实际开发中,也可以在运用在登录功能里,分为登录状态和未登录状态;