网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
苛评VCL: 接口与TObject
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
表于2007-02-05 14:45:40  IP: 218.249.220.*
优美的设计必然是平衡的。正如:E=mc^2一样,E转换成质量,质量也可转换成E。
现在,提供了从对象到接口的AS,却没有从接口的对象的AS!
另外,如果Delphi不提供AS,那么你是不是就在对象里增加一个方法叫GetInterface呢?这和增加GetObject是一个道理。不在于大家是不是知道怎么实现这个功能,而在于设计本身是不是考虑好这个问题。

#   mustangzhi 发表于2007-02-05 17:23:24  IP: 58.44.118.*
对象指针和接口指针并不是同一个地址

如果我没误解你的话,我觉得这点并没影响,
但你讲这个设计是个缺点的话?

我会问你对象指针和接口指针是同一地址的情况可能吗?

对象和接口的指针地址都只是引用,是两个完全不同的变量,你不可能期望一个对象的引用和一个接口的引用使用同一个地址,就像你不能期望两个不同的变量使用同一地址一样.

但接口指针和对象指针实际指向同一对象是可以的.
这种情况是实际的对象存储在同一内存空间.

如果没有另一个不同的对象引用,我们的对象又从哪里创建出来?
接口的引用本身是不能创建对象的吧?

你讲的其它几个缺点我更加是不知所云了.
(同样呀,"我等小辈水平太有限了")

#   ylmg 发表于2007-02-05 23:35:06  IP:
对象指针转为接口指针,这是可以理解的,但为什么要从接口指针转为对象指针呢?如果一定要这么做,很可能是设计上出了问题。
顺便提醒一点,如果你是准备从delphi的对象模型中来找结论的话,有一个问题是无法回避的:如果这个接口的实现类不是delphi写的呢?
就算这个实现类是delphi写的,你也得考虑一些问题,例如如果是用接口委托的方式实现的话,是不是会有问题。
写过一个比较变态的函数,如下:
{
很变态的一个函数实现。
如果一个类实现了某些接口,现在已经拿到了指向接口的指针,但如果需要拿到对象指针的话,
需要用额外的比较麻烦的方法,这里提供一个函数可以方便拿到对象指针,该函数依赖于
delphi 的内部编译实现,如果这个类是由其他语言实现的话,不可以使用该函数。
因此通常情况下不建议使用该函数。
}
function GetObjectFromIntf(Intf: IUnknown): TObject;
begin
Result:= TObject(Integer(intf) - ((not PByte(PInteger(PInteger(intf)^)^ + 4)^ + 1) and $000000ff));
end;

#   bluniu 发表于2007-02-06 10:51:18  IP:
看到这么多谦虚的高手,我发现我用了3年的delphi(虽然现在不用了)还基本等于白痴级。没有各位究根刨底的精神。
我发现其实大家都有个共同的,就是也同时在学习研究其它语言。。。

如果以在座各位的水平,能组织起来一起做点东西,也是件不错的事,提倡互相讨论进步,不提倡互相鄙视。

因为在delphi调用com事件响应时嫌搞得有点麻烦,而且还没实现。所以中断了学习。

顺便弱弱的文句,如果也变态的使用同一接口在单线程实现两个不同的对象(虽然一般情况下无此必要),如果接口指针与对象指针一致,那是不是说两个对象。。。,好象有点不太对劲。或者是接口VMT中也有了两处记录,com原理不懂,朋友们给解释下。


#   ralf1999 发表于2007-02-06 11:31:15  IP: 221.220.91.*
关于将INTERFACE转换为OBJECT,前提是:
在不使用COM的情况下,只是将INTERFACE做为一般的OO技术使用在设计中。
例如:
由FACTORY创建的对象通常得到的是一个INTERFACE,当这个对象被交还给FACTORY消毁时需要可能需要由INTERFACE转换为OBJECT。
当使用OBJECT POOL时,当传入对象时可能需要由INTERFACE转换为OBJECT。
等等,另外一点是,VCL的设计是基于OBJECT的,当在你的设计中对VCL中的类进行包装时(包装到INTERFACE中),尢其是涉及到VISUAL OBJECT时,往往会发生INTERFACE到OBJECT的转换。

INTERFACE转为OBJECT也不是什么奇怪的事,即然存在这么一项功能,那么就可以考虑:怎么用?用在哪?为什么用?不必急着贴标签,因为技术本来就是这么一回事,没有什么不可以的。

#

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号