读书人

状态形式(State Pattern)

发布时间: 2012-09-13 09:51:52 作者: rapoo

状态模式(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();}}

输出结果:
---------------A-B-C-D--------------
我是状态A
我是状态B
我是状态C
我是状态D
---------------A-C-D---------------
我是状态A
---------------B-D-A---------------
我是状态B
我是状态D
我是状态A

读书人网 >编程

热点推荐