当前位置:天才代写 > tutorial > JAVA 教程 > XDE中模式驱动的设计与开拓(二)

XDE中模式驱动的设计与开拓(二)

2017-11-10 08:00 星期五 所属: JAVA 教程 浏览:490

副标题#e#

第二部门:XDE中的模式机制

1 概述

在前一期的系列文章中,我们对模式,出格是设计模式在UML中的建模要领作了简腹地,理论上的先容。此刻该要举办实践了。此刻支持模式建模并可以或许基于模式举办应用措施开拓的东西并不是许多。Rational XDE是个中最为著名的一个,而且确实提供了极为优秀的成果。

XDE的Java版有两种,一种是基于Eclipse内核的独立运行版本(今朝只支持Eclipse1.0)。另为一个是集成在WASD中的,作为WASD的一个插件同其以其运行(今朝只支持WASD 4.0)。实际上WASD利用的就是Eclipse的内核,所以,这两者在成果上(甚至外观上)都没有多大的区别。此刻Rational已经被IBM所归并,所以有足够的来由可以相信,在将来的WSAD中,XDE的成果会被越发完美的整合到个中。

XDE最大的卖点有两个,一个是阐明设计同代码编写在是在同一个IDE中完成的,并可以举办正向-逆向工程,完美的实现迭代开拓中所需要的模子-代码的映射。别的一个就是这篇文章的主题:模式的界说和应用。你不只可以利用XDE中预界说好了的23个经典的GoF设计模式,还可以本身界说模式,在开拓中应用它们,可能导出供其他人利用。

模式机制是XDE中实现重用的焦点技能。你可以通过这个机制来实现模子元素和其它成品的重用。它提供了Model-to-Model和Model-to-Code的调动成果。这使得你可以或许将一个涉及的模子作为来辅佐一个特定的设计。它照旧得你可以或许将一个模式中的元素内容归并到已存的设计模子中。

2 XDE中的模式描写

在XDE中,模式的描写根基上遵循了UML所界说的参数化协作尺度。可是,由于UML中界说的只是如何来对模式建模,而对如何界说模式,应用模式,以及详细的代码生成并没有过多涉及。因而,XDE在UML的基本上,作了一些公道的扩展。

首先,我们来看一看Asset的观念。一个Asset是一些软件成品的荟萃,它们被组织在一起以期可以或许办理某一个问题。Asset可以或许通过其界说的可变点(Variability Point)来举办扩展,在举办Asset重用的时候,开拓者需要对这些可变点提供详细的内容来充分Asset,以完成Asset的重用。

XDE中模式驱动的设计与开辟(二)

Rational此刻推崇一种Asset Based Development进程要领,来作为其对RUP的一个增补,Asset就是其要害。这儿并不规划对Asset和Asset Based Development作过多地阐述,那已经偏离了这篇文章的主题。从模式这个领域而言,你可以简朴的把Asset看作是模式的界说,描写及其详细的实现。

在XDE中, Asset暗示为一个结构型为<<Asset>>的包。被申明为<<Asset>>的包可以被导出以利于在差异的开拓者,甚至差异的东西中重用,只要它们都遵循Asset的类型Reusable Asset Specification。

模式是一种Asset,可是Asset并不必然是模式。一个模子可以被包装在一个Asset中,而个中并不带有任何的模式描写。XDE可以或许处理惩罚这两种可重用项目。在XDE中,模式暗示为包括在一个<<Asset>>包中的,带有模板参数的相助图。有许多种要领可以建设一个<<Asset>>包,但需要留意的是,建设一个UML的包并手工地将其版型配置为<<Asset>>并不会将这个包注册为模式。

在XDE中,<<Asset>>包可以被导出为一个.ras文件。一个.ras文件实际上就是一个zip文件,不外它有着本身的内容布局,这和J2EE中的.war文件很雷同。它利用了rasset.xml和resource.xml这两个xml文件来提供对这个压缩文档的描写。RASAsset.xsd文件是RAS的XML Schema,界说rasset.xml和resource.xml这两个文档的内容名目和寄义。其它的文件是模子和文档成品。


#p#副标题#e#

在XDE中,模式由如下的一些部门构成:

Asset

在一个模式的底部是一个版型为<<Asset>>的包。模式中涉及到的所有内容都包括在这个包中,它也是用来导出切合RAS类型的可重用模式的逻辑单位(实际的物理封装单位但是一个包,也可以是一个模子)。模式也可以不存在于Asset包中,可是因为模式的建设方针,就是但愿可以或许通过RAS类型来举办重用的,所以并不推荐利用这种要领。

模板协作(Template Collaboration)

在模式Asset中就是template collaboration,它是模式的焦点。险些模式所涉及的所有内容都界说在个中。模版参数的属性可以通过Pattern Explorer来查察。

模板参数(Template Parameters)

一个模板协作包括有一个可能多个模板参数,每一个界说一个特定的模式输入。譬喻,假如你想有一个名为MyClassInput的参数,你可以利用谁人名字建设一个模板参数。

范例元素(Type Element)

#p#分页标题#e#

每一个模板参数都有一个范例,通过其Type属性来界说。譬喻,假如模板参数的范例是class,那么这个模板参数就只接管类作为其参数值。这同在界说一个函数的参数时,需要指定其参数的范例(好比int)是一样的。

基本上下文(Root Context)

一个模式尚有一个基本上下文,在建设模式时所引入的其它元素被组织在这个处所。这些元素凡是城市被直接建设,需要很少可能基础不需要参数来建设它们。好比在一个模式中会被用到的一个支撑类。缺省环境下,基本上下文就是Asset包。你可以在Pattern Explorer中将其切换到其它的包中。

实际上在模式地址的Asset包中,可以存在任何范例的元素,好比描写模式布局的类图,描写模式中参加者之间的交互的顺序图,等等,都可以被放在基本上下文中,在模式被扩展的时候一起被复制到扩展点处。

为了提供对模子的可视化开拓和暗示,XDE在Eclipse的基本上,添加了新的Model透视图(Perspective)。实际上所有模子相关的内容,不只仅是模式,都是在这个透视图中实现的。而对模式,除了所有模子公用的Model Explorer外,尚有一个Pattern Explorer和Pattern Property视图来提供对模式的界说和描写。对这些界面的利用都还较量简朴,要害的是要搞清楚那些属性,配置值是来做什么的。除了上面的那些尺度的Eclipse图形元素外,XDE中还引入了Pattern Wizard来辅佐你完成模式的应用。

3. 模式的应用

XDE模式的应用,可以看作是一种基于模版(Template)的要领:界说好的模版参数,通过建设,可能同已有模子中同模版参数范例一致的元素的融合,来完成对模式的扩展。模式中没有被界说为模版参数的元素,将在扩展点处被自动建设。

在应用一个模式的时候,有两个根基观念:

1、扩展点(expansion location):这是在模式被应用后,生成的类和其它元素被安排的处所。纵然是模式并没有生成任何的元素,并且其根基上下文中也没有涉及到任何得元素,对付模式的应用而言,这个扩展点仍然是需要的。

2、绑定(binding)和绑定点(binding location)。绑定是模式中的参数被赋予详细的参数值的进程,这个参数值可以是用户指定的一个模子元素,也可以是用缺省值自动建设的元素。当一个模式被应用之后,在指定的绑定点中就有一个绑定工具被建设,它被用来维护这个模式的模版参数和详细的参数值之间的绑定干系。凡是绑定的浸染是用来在修改了模式之后,从头应用模式,而不需要在通过Pattern Wizard来再次设定应用模式所需的参数值,你也可以直接在绑定工具中修改被绑定的参数值。在缺省的环境下,绑定点和扩展点是同一位置。

有了这两个根基的观念后,我们可以把模式的应用简朴的描写为如下的进程:在扩展点地址处,通过对模式中所界说的参数指定详细的参数值,并将这些参数值实例化到详细的模子中。而模式地址包中其它的除了模版参数外的其它元素也会被相应的建设,包罗类图,顺序图等。

我们照旧以Command模式为例,来例示一个模式的界说和应用。

要应用模式,我们在需要应用的模子上调出快捷菜单,选择Apply Favorite Pattern,然后再选(GOF)Command模式,如下图:

XDE中模式驱动的设计与开辟(二)

#p#副标题#e#

然后呈现Pattern Wizard,辅佐你来输入模式的参数值:

XDE中模式驱动的设计与开辟(二)

Pattern Wizard的第一个页面上给出了具体的模式说明,以及主要的参加者之间的交互,以辅佐开拓者选择符合的模式。点下一步之后,就是要输入参数值了:

XDE中模式驱动的设计与开辟(二)

一般的参数值的指定有两种要领:

Selected Element:如上图,需要在模子中指定一个范例相符的元素,这儿是一个类。这种要领将在已有的元素中融合入模版参数中界说的内容,而差池原有的元素造成任何的影响。

Generated Value:如下图,需要为给定的参数提供一个字符串名字,并生成一个全新的相应名字的元素。

XDE中模式驱动的设计与开辟(二)

当为每一个参数均指定了一个绑定值后,再别离指定扩展点和绑定点即可:

XDE中模式驱动的设计与开辟(二)

#p#副标题#e#

这样,一个模式的应用就完成了。Command模式中所描写的语义信息,以及详细的模子元素都被引入到现有的模子中。

#p#分页标题#e#

实际上,在XDE中应用模式的要领有许多,可是利用Pattern Wizard是尺度的也是最为简朴的要领,并且XDE也答允在界说一个模式的时候,为Pattern Wizard中的每一个页面都做具体的定制,使得模式的应用更为利便简捷。其它的要领,好比利用结构型,利用绑定工具等要领,这儿不再详述。

上面临在XDE中模式的应用进程作了一个简腹地描写。而从XDE的内部事情机制来看,模式的应用是分为如下的三步来举办的:

1. 绑定:为模式中的每个模版参数指定详细的参数值。

2. 参数的计较/映射:计较参数相关的内容,好比约束,剧本等等。并按照所指定参数值的数目,举办参数值的映射和匹配。

3. 展开:当所有的参数都确定之后,模式就可以或许被展开了。通报进去的参数值会被修改或建设,然后复制到扩展点处,模式的展开完成。

对这个进程的领略是很重要的,因为我们不只仅需要应用已有的模式,还需要来界说,建设模式。对这个进程的领略,可以或许让我们对模版参数以及其绑定之间的干系有了更清楚地认识。而这恰恰就是模式界说的焦点。

4. 模式的界说

从上面的模式应用的例子可以很容易的看出,在XDE中,模式界说的要害在于对模版参数的界说,这包罗有模版参数的范例,生成方法,等等。

在XDE中开拓模式之前,还应该对抽象出来的模式举办细化,以使之可以或许有详细的实现。好比,对付差异的语言,模式的实现也会有差异。细化的进程较量繁琐,并且也没有一个必然的准则,这儿就不多加接头了。我们具体的存眷,如安在XDE中开拓一个模式。

在XDE中,一个模式的开拓,可以遵循如下的步调:

4.1 建设模式Asset

前面说过,一个模式被包括在一个结构型为<<Asset>>的包中,所以在建设一个模式之前,首先需要建设这个包。可以通过在Model Explorer的上下文菜单中选择Add UML > Pattern Asset来建设这个包。如下图所示,会呈现如下的对话框:

XDE中模式驱动的设计与开辟(二)

上图要留意的是一个Asset可以被界说在一个包中,以可以被单独的界说在一个模子中。这将抉择模式的基本上下文是包照旧整个模子。

4.2 为参加者界说模版参数

模式的参加者是模式中各个职责的包袱者,也就是模版参数所需要界说的处所。虽然,模版参数还可以包括其他方面的信息,而不只仅是模式的参加者。简朴的说,模版参数界说了所有模式需要被定制的方面。要建设一个模版参数,可以在Model Explorer中新建设的模式协作的上下文菜单中选择Add UML > Template Parameter。再界说好模版参数后,还需要为其指定一个范例。在建设的模版参数的上下文菜单中选择Add UML,然后选择详细的范例:可以是类,要领,属性,接口,字符串,整数等等。根基上大部门的UML元素都可以被建设为一个模版参数。虽然,对一个模式的参加者而言,它的范例凡是是类,可能接口。对被配置为类范例的模版参数,我们大概还需要向其添加属性,要领等内容。对个中的要领,还可觉得其指定代码模版。这些内容城市跟着模版参数被引入到详细的模子开拓中去。

我们还可以配置参数的生成方法。判定模版参数值是需要选择一个以存在的模子元素,照旧新建设一个,可能从其它的模版参数中衍生出来?这几种差异的生成要领取决于模版参数的Value Source值,它可以是上面的三种环境之一,可能是它们之间的组合。这在后头一节中的Value Source中有更细致的先容。你可以在Pattern Explore中的Advanced Properties中配置Value Source的值。

#p#副标题#e#

4.3 建设模式的布局类图

可以在模式的界说中包括一个或则多个类图来界说模式的各个参加者之间的协作与干系。在Model Explorer中新建设的模式协作的上下文菜单中选择Add Diagram > Class。

XDE中模式驱动的设计与开辟(二)

实际上,对付模式应用而言,这个类图并不是必须的。可是,这个类图可以或许很好的对模式的布局作出描写,因而也是很须要的。

4.4 添加其它可选的模式元素

你还可以在Model Explore中为模式添加其它非模版参数的模子元素。这些元素被安排在模式的基本上下文中,在模式被绑定展开的时候,他们也会被自动的建设,并安排在扩展点处。在Pattern Explorer中,你可以在模式的Root Context目次下看到这些内容。

4.5 为模式参加者建设代码模版

代码模版为参加者中的要领填充详细的代码实现。在某一个要领上调出其上下文菜单,选择Code Templates > Bind,可觉得这个要领建设一个新的代码模版,可能选择一个已有的代码模版绑定到要领上。

在后头的一节中将有对代码模版的专门描写。

XDE中模式驱动的设计与开辟(二)

这样,一个完整的模式就被开拓出来了。随后我们就可以利用XDE的Pattern Wizard来应用界说的模式到详细的模子开拓中去了。

4.6设置模式

#p#分页标题#e#

到此刻为止,我们已经完成了大部门的模式开拓的事情。可是,尚有一些设置问题需要办理。在Pattern Explore中,我们可以对模式举办设置,以期其可以或许凭据我们预想的那样事情。

设置主要漫衍在两个处所,都在Pattern Explore中以树状目次显示。详细的配置值则可在Pattern P视图修改。一部门在模式的Advanced Properties下,尚有一部门在模式中每个模版参数的Advanced Properties下。如下图:

XDE中模式驱动的设计与开辟(二)

在这些处所,可以定制Pattern Wizard中呈现的每个页面的内容(Application Wizard Properties & Application Wizard Icons),模式的描写(Custom Dialogs),参数的生成方法(Value Source),以及约束界说(Constraints),界说事件处理惩罚(Callouts)等等。根基上所有模式的属性,都可以或许在个中界说和修改。一些更为详细的内容,可以拜见后续的高级话题部门。

这样,就根基上完成了对一个模式的设计事情,我们可以把设计好的模式,通过XDE所提供的导入/导出成果,导出为一个尺度的RAS文件,供其它的开拓人员利用。

 

    关键字:

天才代写-代写联系方式