设计模式之状态模式
状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。
应用场景
- 对象的行为取决于其状态,并且必须根据该状态在运行时更改其行为。
- 通常,几个操作将包含相同的条件结构。State模式将条件的每个分支放在一个单独的类中。可以将对象的状态视为一个对象,它可以独立于其他对象而变化
概括来说,状态模式将行为包装到具体的状态对象中。每个状态对象是抽象状态的子类。状态模式意图是在改变对象的内部状态的时候,行为随之改变。
模式结构
状态模式分为三种结构:环境角色、抽象状态角色、具体状态角色
代码
电灯有两种基本行为 开启、关闭。但是有两个状态,正常和坏掉的状态。将共同的行为封装到统一的状态接口中,再根据不同的状态,创建子类完成不同状态形成不同的行为。
灯再正常状态下能够正常开启,正常关闭。等在坏掉的状态下,不能开启和关闭。状态模式就是根据这个逻辑抽离行为,将具体行为包装到具体状态对象中。
抽象状态角色
1 | public interface State { |
具体状态角色
1 | public class NormalState implements State{ |
环境角色
1 | public class Context { |
客户端测试
1 | public class App { |