您的位置:首页 > 其它

设计模式应用之使用COMPOSITE模式实现流程(一)

2008-05-23 00:13 681 查看
——使用COMPOSITE模式实现流程
(一)问题的来源、模式介绍
最近在工作的过程中,完成一个类似10086的流程。在实现的过程中,感觉基于C过程式的实现方式:把一个流程写成一个函数调用,包含庞大的case,写起来很费记忆力,而且这样的实现方式不可配。
换句话来说:我们不能动态配置流程。因此在实现这个流程的过程中,我一直思考着用另外的一种实现方法来实现。首先想起的方法——完全使用面向对象的编程方式,采用适当的设计模式。
从<<设计模式——可复用面向对象软件的基础>>中,可以找到如下一些可选的设计模式:
1:COMMAND 模式
1) 意图
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。
2) 别名
动作(Action),事物(Transaction)
3) 适用性
回调机制的一个面向对象替代品
在不同的时刻指定、排列、执行请求
支持取消操作
支持修改日志
用构建在原语操作上的高层操作构造一个系统。这样一种结构在支持事务的信息系统中很常见。
4) 结构图



2:STATE(状态)——对象行为模式
1) 意图
允许一个对象在内部状态改变时改变它的行为。对象看起来似乎修改了它的类。
2) 动机
状态对象。
3) 适用性
一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态的改变它的行为。
一个操作中含有庞大的case语句,并且这些分支依赖于该对象的状态。
4) 结构图



3:COMPOSITE(组合模式)
1) 意图
将对象组成树形结构以表示“部分-整体”的层次结构。COMPOSITE使得用户对单个对象和组合的使用具有一致性。
2) 适用性
表示对象的部分——整体层次结构
希望用户忽略组合对象与单个对象的不同,用户将统一使用组合结构中的所有对象。
3) 结构图



经过仔细的分析待解决的问题,我决定综合使用COMPOSITE、STATE模式,其中还综合采用另外的一个模式MEMENTO(备忘录)
这里简要介绍MEMENTO(备忘录)
1) 意图
在不破坏封装性的前提下,捕获一个对象的内部状态。
但是我这里使用它只是要保存当前的一个状态。

参考文章<<设计模式——可复用面向对象软件的基础>>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐