Delphi分解模块的技术

来源:互联网 发布:mac口红国内专柜价格 编辑:程序博客网 时间:2024/05/07 15:36

众所周知,系统需要进行多人并行开发时,应该把系统分拆成独立的模块,这样才能避免开发冲突。但如何进行分拆呢?在Delphi系统中,有很多种方法,下面来进行一一介绍与分享。

1.把模块拆分成包(dpk),直接在主程序中通过LoadPackage函数把包装载进来即可。不过这种方法也有些不便,所有的类必须继承自TPersistentClass,并且RegisterClass之后才能被GetClass从主程序获取,这样操作也是比较麻烦的。(不推荐使用)

2.把模块拆分成DLL,编译时不带包编译(问题:由于类在独立的空间,使用外部包时,容易产生类不兼容的问题,在DLL中判断类是否继承自主exe中的对象是不行的,而这种需求又经常出现,因此不推荐使用这种方式。)

3.把模块拆分成DLL,编译时带包编译(在project->Options->Packages中把Build with runtime packages选上),然后把需要的包带进去即可,主程序也是带包编译,这样主程序与DLL就会使用共同的类分配表空间,对相同的类就可以进行兼容判断了,这样就可以使用DLL中继承自公共包中的基类来实现功能了,另外这样还可以避免很多问题,如使用第三方控件产生的奇怪问题,DLL建立的子窗口无法在主窗口中“存活”的问题,等等。

4.把模块拆分成带公共包的DLL或dpk,把基类拆到公共包中,公共包中包含全局变量,在DLL或dpk中可以使用initilization对全局变量进行初始化,不需要传递任何参数,这样就可以实现把接口类和全局变量放在公共包中,具体实现类直接引用公共变量的方案,不过使用这种方式时,接口的递增式开发要注意的是管理问题。
        有人主张在开发前就花比较长的时间把接口设计好,不过这种“理想”情况只有在理想国度内才可能出现,不需要修改的接口设计是不可能的。不过最主要的是设计好一个沟通流程,这种沟通机制如何建立呢?不同的开发团队有不同的实现机制,请有兴趣的朋友一起来看看下周的设计功能讨论。

原创粉丝点击