I坐标

博客园 首页 新随笔 联系 订阅 管理
Modules模块(Modules)

        对于大型系统来说,一个常见的问题就是全局命名空间的杂乱不堪:随着开发进度的发展,独立系统的不断整合,命名冲突也就不断出现。Slice提供了模块结构来缓和命名冲突。



        如下的结构:



module MutableRealms



{



 module WishClient { }; 
 module WishServer { }; 

}



        一个模块能容纳任何合法的Slice结构,包括其他的模块定义。使用模块组织相关的定义从而避免全局命名的杂乱和减少命名冲突的可能。



        Slice要求所有的定义被嵌套在模块中,这样你就不在模块之外定义一个全局的定义。例如,下面的代码是不合法的:



interface I



{



 //错误:全局定义中只能是module 

}



        全局定义是被禁止的原因是因为某些实现语言不支持全局定义。例如Python。



        模块是可以被二次定义的。例如:



module MutableRealms



{



 //这里是定义 

};



        //也许在另一个源文件中:



module MutableRealms



{



 //正确的,二次模块定义 
 //更多的定义 

};



        二次定义模块对于大型项目是非常有用的:它们允许你在几个源文件中存放一个模块的内容。这样做的好处就是当一个开发者修改了模块的某一个部分时,只有与修改的内容相关的文件需要重新编译,而不是重新编译模块的相关的全部文件。



        模块映射到编程语言的对应的定义结构。例如,C++,C#和VB,模块映射到命名空间。Java则是package。



Ice ModuleIce模块(Ice Module)

 

        Ice的运行时API,除了少部分的语言特定的调用不能在Ice中表示以外,所有的都定义在Ice模块中。换句话说,大部分的Ice API是完全用Slice定义表达的。这样做的好处就是一个单独的Slice定义就可以有效地定义适用所有支持语言的Ice运行时的API。



posted on 2005-01-18 11:14  I坐标  阅读(1160)  评论(0编辑  收藏  举报