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

——使用COMPOSITE模式实现流程

                                  ()问题的来源、模式介绍

      最近在工作的过程中,完成一个类似10086的流程。在实现的过程中,感觉基于C过程式的实现方式:把一个流程写成一个函数调用,包含庞大的case,写起来很费记忆力,而且这样的实现方式不可配。

     换句话来说:我们不能动态配置流程。因此在实现这个流程的过程中,我一直思考着用另外的一种实现方法来实现。首先想起的方法——完全使用面向对象的编程方式,采用适当的设计模式。

     <<设计模式——可复用面向对象软件的基础>>中,可以找到如下一些可选的设计模式:

       1COMMAND 模式

1)  意图

将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。

2)  别名

    动作(Action),事物(Transaction)

3)  适用性

回调机制的一个面向对象替代品

在不同的时刻指定、排列、执行请求

支持取消操作

支持修改日志

用构建在原语操作上的高层操作构造一个系统。这样一种结构在支持事务的信息系统中很常见。

4) 结构图

2STATE(状态)——对象行为模式

1)  意图

允许一个对象在内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

2)  动机

状态对象。

3)  适用性

一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态的改变它的行为。

一个操作中含有庞大的case语句,并且这些分支依赖于该对象的状态。

4)  结构图

 

3COMPOSITE(组合模式)

1)  意图

 将对象组成树形结构以表示“部分-整体”的层次结构。COMPOSITE使得用户对单个对象和组合的使用具有一致性。

2)  适用性

表示对象的部分——整体层次结构

希望用户忽略组合对象与单个对象的不同,用户将统一使用组合结构中的所有对象。

3)  结构图

 

 

 

经过仔细的分析待解决的问题,我决定综合使用COMPOSITESTATE模式,其中还综合采用另外的一个模式MEMENTO(备忘录)

这里简要介绍MEMENTO(备忘录)

1)  意图

在不破坏封装性的前提下,捕获一个对象的内部状态。

但是我这里使用它只是要保存当前的一个状态。

参考文章<<设计模式——可复用面向对象软件的基础>>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值