目录
- 不同状态下做不同的事情
- 页面上的if判断,不同情况输出不同的内容
- 不同状态之间转换-状态模式的应用
- 不能根据一个状态找到处理者, 则每个都尝试一下 - 责任链模式
正文
- 状态值的if判断
重构后的代码
- 页面上的if判断
修改后,将业务逻辑移到java层, 采用MVC
- 不同状态之间转换-状态模式的应用
业务场景:
以传送带的门为例,考虑其状态变化过程为:传送带的门由单个按钮控制,并且假设初始时处于关闭状态。按一下按钮门开始打开,如果在门完全打开之前再次按下按钮,门开始关闭。一旦门完全打开,它将在2秒延时之后自动开始关闭过程。要禁止门自动关闭,可以在门打开之后按一下按钮。下图描述了传送门的状态变化情况
可能的代码
重构后的代码:
状态基类
door代码
其中OpenState类的代码
[见:http://www.dnbcw.com/biancheng/java/ontc234886.html]
- 职责链模式
如果不能根据某一个具体的状态值找到对应的Handler 或者 command类进行处理, 那么可以构造一个责任链, 把不同的handler串联起来, 把数据放到一个context中, 依次交给链中的Handler进行处理, Handler自己判断如果接受这次请求, 则自己处理, 否则调用下一个节点.
Handler接口
结尾
- 个人总结, 欢迎批评指正