站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题如何进行包的设计

如何进行包的设计

摘要: 如何进行包的设计

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="271" height="86" align="center" valign="top"> </td> <td width="429" valign="top">


我们在设计小的应用程序的时候, 设计出来自己的类并不需要太多关注分包的问题, 然而当设计大的应用程序的时候就必须要分包了。

然而类与类之间有的时候有依赖关系, 这种依赖关系甚至可能是跨越包延伸到其他的包, 因此包与包也是有依赖关系的。怎么样对包进行管理?

如下的问题需要进行考虑:
1)在向包中分配类的时候应该遵照什么原则?

2)应该使用什么设计原则来管理包之间的关系?

3)包的设计原则应该先于类(自上而下)?还是类的设计先于包?(自下而上)

4)如何实际表现出包?在C++中如何表现?在java中如何表现?

5)包创建好了之后, 将它们用于何种目的?

</td> </tr> <tr> <td height="20" colspan="2">

自下而上的包设计的几个原则:
包的内聚性原则:
{
1)共同重用原则。

对于使用者来说, 当依赖于一个包的时候, 应该是依赖于一个包中全部的类, 而不是仅仅某一个类。换句话说, 包中的类应该是不可分开的。否则的话,包将直接影响使用者的不必要的重新发布,编译。(这个原则能够避免包分得过于粗。)

2)共同封闭原则
包中的类对于同一类性质的变化应该是共同封闭的。一个变化如果如果对一个包产生影响,那么他对包中的类都产生影响,而对于其他的包不产生影响。(这个原则可以避免包分得过细!)
}

包的依赖性原则:
{
1)无环依赖原则。在包的依赖图中不允许存在环。
“有这种工作经历么? 工作一整天终于完成某个功能后回家,第二天清早去上班却发现那项功能却不能工作,原因是什么呢? 因为有人走得比你更晚,并且更改了你所依赖的那些东西。”---晨后综合症。

2)稳定依赖原则。
朝着稳定的方向进行依赖。
稳定性?
如果改变一个事物需要很大的力气,也就是难以改变, 那么它就是稳定的。
使一个类稳定的方法是让很多的类依赖于它,这样它就具有拒绝变化的n个理由,就是稳定的。相反,如果一个类没有任何类依赖于自己,反而依赖于其他的类,那么就是不稳定的。

3)稳定抽象原则。
抽象类通常是很灵活的, 能够适应OCP的需求。 包的抽象程度应该跟它的稳定性一致。
即:越是稳定的包,其中的类应该是最抽象的。
}

</td> </tr> </table> </td> </tr> <tr>


↑返回目录
前一篇: 面向对象的设计原则
后一篇: 我为什么憎恨Framework