快速业务通道

XDE中模式驱动的设计与开发(一) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
似,包含一个对象(更为确切的说应该是角色)的集合和他们之间的关系。行为方面是一个消息的集合,这些消息在具有某一角色的各对象之间进行传递交换,也就是所谓的交互(Interaction)。协作的静态方面可以用类图来表示,协作图实际上也给出了一些静态的模型信息,而动态方面的描述通常使用顺序图(Sequence Diagram)或者协作图来表示。

从这个角度来看,模式就是一种协作。对设计模式而言,它实质上描述的就是对象的结构以及对象之间的交互--并应用这样的一种协作来解决某一个问题。在UML中,模式使用的是一种特殊的协作,参数化的协作(parameterized collaboration)来表示的。

在一个参数化的协作中,协作的参与者(比如类,也可以是关系等其它元素)可以是一个泛化的协作的参数。每当应用这个协作到一个具体的模型中去的时候,用具体的模型元素来替代这些参数。这样,在这个协作中参数之间的关系就被固定在这个模型中了。虽然对设计模式而言,它包含了比协作更多的含义。但是这样的一种参数化协作的建模方式,已经能够描述模式大部分的语义信息。模式还可以包括使用背景,使用指导,以及使用后果等其他的描述,这些内容可以作为注释写在单独的文本文件中。

XDE中模式驱动的设计与开发(一)(2)

时间:2010-12-10

在使用UML来对模式进行建模的时候,可以遵循如下的步骤:

1. 对一个重复出现的问题给出一种普遍的解决方案,并将其细化成一种机制。因为方案往往只是概念层次上的,要有具体的实现,才能够称其为模式。而普遍的含义更为重要,重复出现的问题,通常会有不同的问题背景,要在这些不同的背景中找出公共的问题域,也并不是一件容易的事情。

2. 在抽象出的问题域中,将上述的机制建模为一个协作,即包含了其静态的结构和动态的交互的一个名称空间,这可以看作是一种抽象,模式也就是这种抽象的产物。

3. 找出模式中必须要绑定到具体的应用中去的部分,将其建模为协作的参数。参数提供了对模式进行扩展以及实现的可能。正因为问题背景的复杂与不同,才需要具体的参数来订制模式。

实际上对模式的捕捉以及实现,是一个很复杂的过程,已经超出了本文要讨论的范畴,这儿给出的步骤,也不一定就能够应用到所有的情况。这儿关注的是,如何用UML来表达一个模式的内容,下面来看一个例子。

1.3 一个例子

下面我们将试验一个简单的设计模式:命令(Command)模式,看如何将其用UML表示出来。并如何应用到一个具体的模型中去。这儿不再详述命令模式的具体的语义,如果有不太熟悉的地方可以参考GoF的《设计模式》一书。

命令模式有如下的结构:

XDE中模式驱动的设计与开发(一) - 编程入门网

图1:命令模式的结构类图

我们将其每一个部分都看作是一个协作的参数,得到如下的一个参数化协作:

XDE中模式驱动的设计与开发(一) - 编程入门网

图2:命令模式对应的参数化协作

或者,我们还可以用一个额外的顺序图来表示这个模式的动态行为:

XDE中模式驱动的设计与开发(一) - 编程入门网

图3:命令模式的动态行为顺序图

XDE中模式驱动的设计与开发(一)(3)

时间:2010-12-10

我们再来看一看模式的的应用,在一个具体的模型中,比如说EJB的模型,假如设计需要使用命令模式来完成一个Command的EJB调用层(关于EJB中的命令模式,具体可以参见《EJB模式语言》一书,这而为了简便起见,作了一些的简化。)根据命令模式的语义,可以对模板参数作如下的绑定:

模板参数 绑定对象
Invoker Containerr
Command Command(自动生成)
ConcreteCommand ConcreteCommand(自动生成)
Receiver Bean Context
State State(自动生成)
Client Remote

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号