快速业务通道

关于Eclipse“分层法则”的使用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

关于Eclipse“分层法则”的使用

时间:2011-08-13 zhuxing

Erich Gamma 和 Kent Beck合著的《Contributing to Eclipse》一书中,提到了Eclipse的一些法则 。在扩展者相关的法则中,由“分层法则”一条,大致意思如下:“将语言无关的功能与特定于具体语言 的功能开发,将核心功能与UI功能分开”。

个人觉得虽然叫做“分层法则”,其实体现的是模块合理划分的思想。

现在重点关注一下“核心功能和UI功能分开”,说一下自己的经验,仅供大家参考。自己的经验是, 分层法则是在概要设计模块划分的时候就需要引入并严格遵守。

1、根据需求,对模块进行划分。典型的输出结果是:底层模块和生成功能模块,示意图如下:

关于Eclipse“分层法则”的使用 - 编程入门网

说明:例如在做集成开发环境(IDE)的产品,底层基础模块包括了资源管理(包含编译处理)、运行 时候模型等类型的模块,当然也可能是workbench类似的模块(虽然是UI,但同样是底层基础模块),这 些底层模块为上层模块提供服务。上层功能模块类似于你创建了一种自己的基于GEF的编辑器等类型的模 块。

2、对各个模块分别进行核心功能和UI进行拆分。这其中既包含了对上层功能模块机型UI和核心功能的 拆分,也包含了对底层模块的拆分。示意图如下:

关于Eclipse“分层法则”的使用 - 编程入门网

说明:到这里,我们的具体功能模块划分了如下:

com.myproduct.myeditor.ui插件(UI部分,例如包含了使用GEF创建了流程编辑器的代码)

com.myproduct.myeditor.core插件(模型部分,例如包含了EMF创建编辑器对应模型的代码)

我们也把底层的模块做了划分:

com.myproduct.resource插件(例如包含了builder等逻辑代码)

com.myproduct.refactoring.ui插件(重构功能,例如包含了一系列重构需要的UI代码等)

com.myproduct.refactoring.core插件(重构功能,例如包含了一些重构需要的模型代码等)

关于Eclipse“分层法则”的使用(2)

时间:2011-08-13 zhuxing

3、确定上层功能模块和底层的UI模块交互。这是最容易破坏Eclipse分层法则的地方了

需求来了:我们的编辑器模块要对一个底层模块做扩展,例如对底层的refactoring重构功能做扩展。

这边容易犯的错误是,com.myproduct.myeditor.core插件会直接使用了 com.myproduct.refactoring.ui插件中的逻辑代码,示意图如下:

关于Eclipse“分层法则”的使用 - 编程入门网

说明:图中的红线清晰的说明了,已经违反了Eclipse的“分层法则”。我们模块中的核心插件直接和 其他模块的UI插件紧密耦合了。可能有人会说,我们的核心功能插件是在上层模块中的,依赖底层功能模 块并不过分,这种想法是错误的!!!任何情况下,都要尽力避免核心功能和UI的紧密耦合。

正确的示意图如下:

关于Eclipse“分层法则”的使用 - 编程入门网

【总结】

1、Eclipse分层法则的使用一定要建立的合理模块划分的基础之上。是现有了功能模块的划分之后, 再对特定模块进行UI和核心功能的拆分。同时,要注意避免分层法则的过度夸大,模块的划分的基础一定 是功能需求,而分层法则只是帮助我们从技术实现的角度更好的划分模块直接的关系。

2、任何模块之间都需要尽力避免UI和核心功能的耦合,哪怕是在上层模块和基础模块之间也同样如此 。例如,看到有些插件开发者在非UI核心功能插件中直接去使用eclipse ui框架或者workbench中的东西 ,一般情况下,这是需要避免的

3、为了防患于未然,一个功能模块默认情况下分成*.core和*.ui两个插件,然后控制好和底层模块插 件间的交互,参见上面2。

4、外面要下雨了,赶紧回了。。。。。不写了  改天补充

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号