状态模式(State Pattern)
状态模式(State Pattern)
状态模式:当一个对象内在状态改变时允许其行为改变,这个对象看起来像改变其类。
思想:采用你中有我,我中有你的方法,将Context类中的逻辑方法到具体的State子类中实现。传递的过程中,交由子类的方法执行,如A-B的过程中,首先给Context定义一个状态A,使用MethodA激A当前的状态,交由SateA处理。A可走的流程只有B,在A中首先将Context状态设置为B,然后交由SateB处理。以下代码围绕着下面的状态转换图去实现。
package org.state;public class Client {public static void main(String[] args) {Context context = new Context();context.setCurrentState(new StateA());// 状态的转换A-B-C-D;System.out.println("---------------A-B-C-D--------------");context.MethodA();context.MethodB();context.MethodC();context.MethodD();// 由于A不能直接转化为C,所以后面的没有执行System.out.println("---------------A-C-D---------------");context.setCurrentState(new StateA());context.MethodA();context.MethodC();context.MethodD();// 状态的转换B-D-A;System.out.println("---------------B-D-A---------------");context.setCurrentState(new StateA());context.MethodB();context.MethodD();context.MethodA();}}