设计模式应用之使用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) 意图
在不破坏封装性的前提下,捕获一个对象的内部状态。
但是我这里使用它只是要保存当前的一个状态。
参考文章<<设计模式——可复用面向对象软件的基础>>
(一)问题的来源、模式介绍
最近在工作的过程中,完成一个类似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) 意图
在不破坏封装性的前提下,捕获一个对象的内部状态。
但是我这里使用它只是要保存当前的一个状态。
参考文章<<设计模式——可复用面向对象软件的基础>>
相关文章推荐
- 设计模式应用之使用COMPOSITE模式实现流程(三)
- 设计模式应用之使用COMPOSITE模式实现流程(四)
- 设计模式应用之使用COMPOSITE模式实现流程(二)
- Python设计模式中单例模式的实现及在Tornado中的应用
- PHP设计模式笔记:使用PHP实现工厂模式
- 设计模式之——单例模式(Singleton)的实现、优缺点和常见应用场景
- 使用单例和工厂设计模式实现dao实现层的解耦
- 设计模式-单例模式(Singleton)在Android中的应用场景和实际使用遇到的问题
- 通过例子学设计模式之--原型模式以及使用场景说明(C++实现)
- 游戏开发设计模式之原型模式 & unity3d JSON的使用(unity3d 示例实现)
- [设计模式]在CodeDom代码生成中使用Decorator模式实现类型创建
- 使用观察者模式实现Java应用程序设计MVC模式
- 简单设计模式实现业务逻辑与流程逻辑的分离
- 如何使用三层架构设计模式去完整的实现一个功能?
- [置顶] 设计模式-单例模式(Singleton)在Android中的应用场景和实际使用遇到的问题
- 设计模式的应用-工厂方法实现3层模型解耦
- android应用开发-从设计到实现 2-8 组件与常用模式
- Rhyme/设计模式之单例模式详解—作用、应用场景、优点、五种单例模式实现方式
- DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户
- 面向对象程序设计(OOP设计模式)-行为型模式之观察者模式的应用与实现