手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

非COM环境下的接口编程--问题,技巧,应用(一)

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
DLL只有一个导出函数,这意味这它只能导出一个对象的接口,就象上面那样,但如果我们要在这个DLL中维护多个对象怎么办呢(特别是一些按照继承关系连接起来的对象家族,或者具有共同特点的对象)?

※使用工厂模式:

解决上面问题的最好办法是在DLL的设计中使用工厂模式来管理其中维护的多个对象,这样做不仅可以维护不同的对象,还可以维护一个类的多个实例。然后我们只用在那个唯一的导出函数中导出这个工厂对象的接口,其它的对象接口都可以通过这个接口获得。比如象下面的样子:

function TFooManager.CreateAFoo: IFoo;

begin

inc(FooNum);

if length(FList)<FooNum then

setlength(FList,FooNum*2);

FList[FooNum-1]:=TFoo.Create;

result:=FList[FooNum-1] as IFoo;

end;

例如上面的TfooManager就是一个工厂类,它负责管理DLL中具体对象的生命周期,CreateAFoo创建一个DLL中名为Foo的对象,并把它保存到自己的私有字段,一个动态数组中:

private

FList:array of TFoo;

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!