状态模式还应细分

08-11-03 power1128
今天在jdon论坛随便逛逛,无意间翻到一个帖子:状态模式的应用
在经过一番思考后,我觉得状态模式已经向两个方向发展:
1.注重封装流程流转逻辑的状态模式,比如工作流;
2.注重对不同状态进行相应业务封装的状态模式,比如design pattern 的设计模式里举的那个TCPState的例子。
这也是我的突发奇想,不知道大家有何想法,大家交流一下。

[该贴被power1128于2008-11-03 17:59修改过]

banq
2008-11-03 19:01
>注重封装流程流转逻辑的状态模式,比如工作流;
是这样,状态非常重要,需求表达都需要状态图UML来表达,状态是软件的灵魂,纲举目张的纲。

power1128
2008-11-04 09:43
那banq大师能否解释一下我的第二种想法,因为我看您对状态模式主要都是推荐第一种应用,为什么呢?

banq
2008-11-04 09:49
不敢称大师。

>注重对不同状态进行相应业务封装的状态模式,
这就是状态机,将业务中状态使用状态模式进行统一封装,不要让任何一个程序员都可以改变状态,导致系统状态混乱,将状态切换封装成一个黑盒子,输入事件;输出状态。

这样也杜绝程序员直接通过数据表字段来修改状态可能,很多人喜欢用数据表字段1 2 3表示状态,这就是数据库思维导致的,问题相当多,拓展不便,任何程序员都能操作修改,这样开发出来的系统基本是废物。