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

依赖关系

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

解释返回页首

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

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

使用返回页首

按照如下方式逐步生成导入依赖关系:

  • 开始制作对象模型之前,先制定依赖关系的概要,以便在工作中用作指南。
  • 完成模型后,使用它来表示模型中的实际依赖关系。这样,就必须更新对象模型中的导入依赖关系。
  • 如果您在早期就将模型分为数个包,那么使用导入依赖关系来表示允许在何处使用依赖关系。
  • 各包之间的依赖程度将影响系统对变更的承受能力。在以下情况下,对象模型更易于变更:
  • 从每个包的外部引用了最少数量的被包含类。
  • 每个包几乎不依赖其他包。
  • 分别测试每个包。这意味着您应该能够通过模拟某个包所依赖的包来测试该包。您不应要求其他包得到完整或近乎完整的实施。如果您能分别测试包,对每个包的系统开发与维护将变得更容易。
  • 将对象模型的常规部分分别置于其他包所依赖的各个包中。如果有这样的包,请严格关注发布版本的处理,因为如果对此类包进行变更,系统中的多个部分可能会受到影响。

示例

假定您在回收机中找到了两个类(客户面板操作员面板)的一些共同之处。您将这些通用服务分配给一个名为面板的新类,该类位于一个名为面板的新包中。另外那两个类就可以引用该类,从而使用其中的通用服务了。因为这两个类分别属于两个不同的包,因此这两个包将依赖新包。这将消除冗余,即只需在一个地方对共有功能进行变更就可以了。

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

<script language="JavaScript" type="text/javascript"> <!-- 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; } } } // --> </script><script language="JavaScript" type="text/javascript"> <!-- 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; } // --> </script><script language="JavaScript" type="text/javascript"> <!-- 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; } // --> </script><script language="JavaScript" type="text/javascript"> <!-- if(MSFPhover) { RupGray=MSFPpreload(getImageUrl('/images/rup1.gif')); RupBlue=MSFPpreload(getImageUrl('/images/rup1_a.gif')); } // --> </script>

分栏显示 Rational Unified Process

Rational Unified Process  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值