您的位置:首页 > 其它

指南:设计中的导入依赖关系

2005-10-14 21:48 211 查看

依赖关系
设计模型中的导入依赖关系是一种被赋予了构造型的依赖关系,其来源是一个设计包,而目标则是另外一个设计包。导入依赖关系导致目标设计包的公有内容可在源设计包中被引用。
主题解释
使用

解释

处理包之间的导入依赖关系是构建对象模型的一个重要方面。如果一个包的所有类都能导向到另一个包的类,那么前者依赖于后者。为了表达这种依赖关系,您可使用从一个包到该包所依赖的另一个包的导入依赖关系。


包之间的依赖关系使用导入依赖关系表达。

使用

按照如下方式逐步生成导入依赖关系:
开始制作对象模型之前,先制定依赖关系的概要,以便在工作中用作指南。
完成模型后,使用它来表示模型中的实际依赖关系。这样,就必须更新对象模型中的导入依赖关系。
如果您在早期就将模型分为数个包,那么使用导入依赖关系来表示允许在何处使用依赖关系。
各包之间的依赖程度将影响系统对变更的承受能力。在以下情况下,对象模型更易于变更:
从每个包的外部引用了最少数量的被包含类。
每个包几乎不依赖其他包。
分别测试每个包。这意味着您应该能够通过模拟某个包所依赖的包来测试该包。您不应要求其他包得到完整或近乎完整的实施。如果您能分别测试包,对每个包的系统开发与维护将变得更容易。
将对象模型的常规部分分别置于其他包所依赖的各个包中。如果有这样的包,请严格关注发布版本的处理,因为如果对此类包进行变更,系统中的多个部分可能会受到影响。
示例假定您在回收机中找到了两个类(客户面板操作员面板)的一些共同之处。您将这些通用服务分配给一个名为面板的新类,该类位于一个名为面板的新包中。另外那两个类就可以引用该类,从而使用其中的通用服务了。因为这两个类分别属于两个不同的包,因此这两个包将依赖新包。这将消除冗余,即只需在一个地方对共有功能进行变更就可以了。

© 1987 - 2001 Rational Software Corporation。版权所有。


<!--

function loadTop()

{

if(parent.frames.length!=0 && parent.frames[1].name=="ory_toc")

{

alert("已分栏显示 Rational Unified Process");

}

else

{

if(window.name=="ory_doc")

{

window.name = "xyz1234";

}

var expires = new Date();

expires.setTime (expires.getTime() + (1000 * 20));

document.cookie = "rup_ory_doc=" + escape (document.URL) +

"; expires=" + expires.toUTCString() + "; path=/";

var new_ory_doc_loc = null;

for(i=document.links.length-1;i>=0;i--)

{

if(document.links[i].href.indexOf("index.htm")!=-1)

{

new_ory_doc_loc = document.links[i].href;

break;

}

}

if(new_ory_doc_loc!=null)

{

top.location = new_ory_doc_loc;

}

}

}

// -->

<!--

function getImageUrl(image)

{

var new_ory_doc_loc=null;

for(i=document.links.length-1;i>=0;i--)

{

if(document.links[i].href.indexOf("index.htm")!=-1)

{

new_ory_doc_loc = document.links[i].href.substring(0,document.links[i].href.lastIndexOf("/"));

new_ory_doc_loc = new_ory_doc_loc + "" + image;

return new_ory_doc_loc;

}

}

return null;

}

// -->

<!--

MSFPhover =

(((navigator.appName == "Netscape") &&

(parseInt(navigator.appVersion) >= 3 )) ||

((navigator.appName == "Microsoft Internet Explorer") &&

(parseInt(navigator.appVersion) >= 4 )));

function MSFPpreload(img)

{

var a=new Image();

a.src=img;

return a;

}

// -->

<!--

if(MSFPhover)

{

RupGray=MSFPpreload(getImageUrl('/images/rup1.gif'));

RupBlue=MSFPpreload(getImageUrl('/images/rup1_a.gif'));

}

// -->



Rational Unified Process

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐