状态模式
引入:http://www.iteye.com/topic/267870
先简单介绍一下状态模式:将与状态有关处理逻辑分散到代表对象状态各个类中!
状态之间的改变都对应一个动作,一个动作可能对应多个状态的改变(动作来描述。可能不是特别准确),如提交,审核....
state模式的两个原则:
1.有几个动作就有几个方法,一个动作可能对应多个状态转换,这些方法都定义在同一个接口里。
2.有几个状态就有几个实现上述接口的类。
用户升级vip例子:首先用户必须是注册用户,普通用户升级vip需要提交真实的个人信息,工作人员根据提交信息的真实性进行审核。审核通过成为vip用户,审核未通过,可以再次申请。升级到vip以后,如果查到有违反纪律的。降级到普通用户。需要重新提交vip申请。
public class UserStateFactory { static List list = null; static { list = new ArrayList(); list.add(new NotSubmitUser()); list.add(new VipUser()); list.add(new WaitForVerifyUser()); } public static UserState getUserState(int status) { for (UserState state : list) { if (state.getStatus() == status) return state; } return null; } }