gpt4 book ai didi

oop - 在函数内部创建对象是否可以

转载 作者:行者123 更新时间:2023-12-05 01:18:56 25 4
gpt4 key购买 nike

我在 VBA 中开发一个类,它封装了使用 MSXML2.XmlHttp 下载的内容。

返回值有三种可能:Text、XML和Stream。

我应该为每个函数创建一个函数吗:

 aText=myDownloader.TextSynchronous(URL,formData,dlPost,....)
aXml.load myDownloader.XmlSynchronous(URL,formData,dlPost,....)

或者我可以只返回我在类中创建的 XmlHttpObject 然后有

 aText=myDownloader.Synchronous(URL,formData,dlPost,.....).ResponseText
aXML=myDownloader.Synchronous(URL,formData,dlPost,.....).ResponseXML

在前一种情况下,我可以在类中将 obj 设置为空,但必须编写几个或多或少相同的函数。

在后一种情况下,我依赖于“垃圾收集器”,但有一个更精简的类。

两者都应该有效,但哪种编码风格更好?

最佳答案

在我看来,第一种方法更好,因为您不会将低级细节暴露给高级抽象。

我用 Java 中的网络爬虫做了类似的事情,所以我有一个类仅用于操作 URL 连接获取所有需要的数据(低级)和一个高级类使用返回一个名为 Page 的对象的低级类.

您可以有第三种方法,它只执行 myDownloader.Synchronous(URL,formData,dlPost,.....) 并将返回的对象存储在私有(private)变量中,而其他方法只操作这个对象。这种形式,你只会打开连接一次。

关于oop - 在函数内部创建对象是否可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10234963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com