在Delphi中使用接口有哪些优点和缺点?

2024-02-29

我已经使用 Delphi 类有一段时间了,但从未真正开始使用接口。我已经读过一些关于它们的内容,但想了解更多。

我想听听您在使用 Delphi 中的接口时遇到的优点和缺点,包括编码、性能、可维护性、代码清晰度、层分离以及一般而言您能想到的任何方面。


目前我能想到的就是:

Pros:

  • 接口和实现之间清晰分离
  • 减少单位依赖性
  • 多重继承
  • 引用计数(如果需要,可以禁用)

Cons:

  • 类和接口引用不能混合(至少使用引用计数)
  • 所有属性所需的 getter 和 setter 函数
  • 引用计数不适用于循环引用
  • 调试困难(感谢 gabr 和 Warren 指出这一点)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Delphi中使用接口有哪些优点和缺点? 的相关文章

  • 为什么 {$ifopt FINITEFLOAT ON} 无法编译?

    我有这样的构造 ifopt FINITEFLOAT ON message FINITEFLOAT option ON else message FINITEFLOAT option OFF endif 在我的源代码中 它不会编译 这一定是一
  • Delphi AES 库 (Rijndael) 使用 KAT Vectors 进行测试

    对于这两个库 Delphi 加密概要 v 5 2 http code google com p delphidec TurboPower 密码箱 v 2 07 http lockbox seanbdurkin id au tiki list
  • 如何更改 TPageControl 上标签的方向?

    我是 Delphi 的新手 再次强调 我在 1994 年就使用过 Delphi 我现在有 Delphi 2009 Pro 来自Java 我发现对象继承非常晦涩 我的用户想要选项卡位于左侧的选项卡式页面 但是 TPageControl 不允许
  • Delphi 5 中的 Oracle 数据库连接

    我正在使用 Delphi 5 版本 我想连接到 Oracle 数据库 我有 TDatabase 组件 我不知道如何通过 Delphi 连接到数据库 请提供连接数据库的步骤 谢谢 The TDatabase http docwiki emba
  • 查找字符串是否在列表中的最佳方法(没有泛型)

    我想做这样的事情 Result MyString in string1 string2 string3 string4 这不能与字符串一起使用 我不想做这样的事情 Result MyString string1 or MyString st
  • Delphi - 获取和设置 ListView 的滚动条位置

    这似乎是一个愚蠢而简单的问题 然而 我一直无法找到令人满意的答案 基本上 我有一个列表视图 样式 vsReport 与数据 有时 我必须更新它 因此 我必须清除列表视图并用更新的数据再次填充它 但是 当我这样做时 滚动条位置将重置为 0 我
  • 为什么 Delphi 变体不能保存对象?

    为什么 Delphi 变体不能保存对象 更重要的是 这种限制背后的原因是什么 你绝对可以storeVariant 变量中的对象 只需将其转换为 NativeUInt 无论如何 对象只是一个指针 obj TObject Create v Na
  • delphi THashSHA2 在大文件上返回错误的 SHA256

    Data Cloud CloudAPI pas has class function TCloudSHA256Authentication GetStreamToHashSHA256Hex const Content TStream str
  • TThread.resume 在 Delphi-2010 中已弃用,应该在什么地方使用?

    在我的多线程应用程序中 I use TThread 挂起 and TThread resume 自从将我的应用程序移至 Delphi 2010 后 我收到以下警告消息 DCC 警告 xxx pas 277 W1000 符号 Resume 已
  • 创建无边框表单而不丢失 Windows 命令

    我已将表单更改为无边框表单 我只是更改了BorderStyle财产给bsNone 但现在我的应用程序失去了 Windows 锚点和一些命令 例如 WIN 对齐表单客户端 WIN 最小化表格 WIN 表格右对齐 WIN 表格左对齐 我尝试过设
  • 在C#中定义具有不同参数的接口方法

    interface parentInterface public String methodA define parameters name and dataType and public class childA parentInterf
  • Indy 10 和 sslvTLSv1_2

    我发布的网站目前支持 TLS v1 1 和 TLS 1 2 他们很快将只允许 TLS 1 2 版连接 为此我将 Delphi 5 升级到了 Indy 10 目前 我在代码中创建组件 并且一次运行 3 个线程一切都运行良好 HTTp TIdH
  • 如何制作自定义组件属性?

    我需要帮助来制作一个控件属性 当您单击它时 它会弹出一个自定义对话框 例如设置 就像 TPicture 一样 有什么想法或建议吗 如果您的类用作其他组件的属性 并且您想使用对象检查器来调用对话框 那么您必须实现并注册一个自定义属性编辑器 例
  • 我可以使用从 Java 实现 java 接口的 scala 类吗?

    我正在学习 Scala 很好奇是否可以 创建一个在 Scala 中实现 Java 接口的对象 将对象编译成类文件并将其打包 使用 Java 中的对象 我想在 scala 中实现一个自定义的 lucene 查询解析器 并能够让其他人从 jav
  • 挂钩到文件,实时读取新内容

    我如何连接到另一个程序当前正在使用的文件 该程序不断向该文件写入内容 假设有一个 10 行的文本文件 当我启动我的应用程序时 每次写入程序保存其内容时 它都必须检测并读取其中的任何内容 可以在不不断检查文件大小 日期的情况下完成此操作吗 您
  • 控制台应用程序比 GUI 应用程序运行得更快吗? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我对编程世界比较陌生 我有几个性能问
  • Delphi - 引用在运行时创建的组件

    我正在使用 Delphi 5 并且在运行时创建许多面板 然后在面板上创建按钮 显然也是在运行时创建 我需要这样做 因为将来我可能需要动态创建更多面板 按钮组合 我可以完成所有这些 但我不知道如何引用我创建的面板 因为我找不到访问面板组件名称
  • 惠普定制 OEM Windows 上的 Delphi 平台错误

    我在设置我的计算机以便运行 Delphi 时不断遇到相同的错误 我已经在PLATFORM环境变量 将其转换为 win32 但仍然给出相同的错误 错误错误 平台变量 HPD 无效 PLATFORM 必须是以下之一 Win32 Win64 An
  • 如何在TWebBrowser中显示相对路径图像?

    我正在 DesignMode Doc DesignMode On 中使用 TWebBrowser 来编写 HTML 文档 TWebBrowser 中没有加载文档 磁盘上的 HTML 文件 我直接在 TWebBrowser 中从零开始创建文档
  • 接口实现:声明必须兼容

    我有界面 interface AbstractMapper public function objectToArray ActiveRecordBase object 和课程 class ActiveRecordBase class Pro

随机推荐

  • 如何设置本地文件的背景图片url?

    我想将相对图像 url 粘贴到 div 以将其设置为背景图像 不幸的是 div 不会渲染图像 所以这工作正常并渲染图像 img src assets images HeroImg jpg 但这个没有 div style background
  • 如何使用 Angular 2 路由器重新加载当前路由

    我正在使用 Angular 2hashlocation战略 该组件通过该路由加载 departments id employees 到目前为止还好 在成功批量保存多个已编辑的表行后 我想通过以下方式重新加载当前路由 URL this rou
  • 为没有 Cydia 的越狱 iPhone 分发未签名的应用程序 iPhone

    我正在尝试通过 itms services 协议为没有 CYDIA 的越狱设备分发未签名的 ipa 我浏览了有关如何为 cydia 创建未签名应用程序的指南 http www alexwhittemore com developing ja
  • 没有 async void 的即发即忘

    我有三种方法 其中第一个结果将在接下来的两个方法中使用 并且预计不会返回任何数据 result await DataAccess Query param Query await DataAccess Create result await
  • 关于 Oracle 12c 中的用户

    我的系统上安装了 Oracle 12c 数据库 我有一个需要访问数据库的应用程序 以前在Oracle 11g中 我使用以下命令来创建用户 create user name identified by name grant connect c
  • 使用 HealthKit 后台传递检索步骤后,在后台将数据写入 Firebase

    我有一个HKObserverQuery设置在后台获取步骤 enableBackgroundDelivery方法被调用在application didFinishLaunchingWithOptions 这些步骤是在后台检索的 但我还想将检索
  • MVC 的替代方案是什么?

    似乎我正在进行的每个项目都使用模型视图控制器架构 这就是我滚动自己的项目的方式 还有其他选择吗 否则如何创建一个具有持久存储和用户界面的应用程序呢 MVC http en wikipedia org wiki Model view cont
  • 有没有办法在没有扩展名的情况下从express提供静态html文件?

    我想提供一个 html 文件而不指定它的扩展名 有什么办法可以在不定义路线的情况下做到这一点吗 例如代替 helloworld html 我想做的就是 helloworld 您可以在express static方法中使用扩展选项 app u
  • WinForms:加载本地化帮助 (chm) 文件

    加载特定于区域设置 即已翻译 的已编译帮助文件 chm 的最佳方法是什么 我们的安装会将它们与包含资源的卫星程序集一起部署 我想重复使用 NET 框架用于加载卫星程序集的相同探测规则 并且我绝对希望避免编写自己的搜索算法 因为例如 我必须处
  • 如何在Eclipse中浏览包含源代码的jar文件中的源代码?

    我有一个包含源代码的 jar 文件 如何在 Eclipse 中浏览该源代码 目前 我的 Eclipse 在文本编辑器中打开 jar 文件 但它并没有那么有用 当我查看首选项 常规 gt 编辑器 gt 文件关联 时 我没有关联 jar如果我查
  • INSERT INTO 失败且没有错误

    我正在尝试使用 PHP 和 Mysql 进行 INSERT INTO 这是 SQL 语句 在 PHPMyadmin 中成功 INSERT INTO purchase orders VALUES DEFAULT 501 80999 14917
  • 使用带参数的访问查询导出为文本

    问候 我有一个访问查询 它使用内置参数 例如 开始日期 来提示用户在运行查询时输入日期参数 在大多数情况下 这工作得很好 但今天我尝试将查询导出到文本文件 但收到错误 参数太少 预计2 这是有道理的 因为查询 开始日期 和 停止日期 中有两
  • 避免 Django def post 在保存时重复

    您好 我在保存时遇到重复对象的问题 我怎样才能防止这种情况发生 提前致谢 models py class Candidate models Model user models OneToOneField User primary key T
  • 如果每个条件都做 Rails

    您好 我需要打印出 active 为 0 的候选者 这是我在视图中的代码 如果 active 是或否 我可以打印 但是在每个 do 循环中 我只想打印活动候选者 So how can i add the condition to my ea
  • MVC5 - 如何在 DropDownListFor Html 帮助器中设置“selectedValue”

    正如问题所说 如何在 DropDownListFor Html 帮助器中设置 selectedValue 尝试了大多数其他解决方案 但没有一个有效 这就是我提出一个新问题的原因 这些都没有帮助 Html DropDownListFor m
  • 使用Webview在iPhone中查看.doc、.docx、.rtf、.ppt文件

    我想在 iPhone 中查看 doc docx rtf ppt 文件 但我猜我这边出了问题 它不适用于上述格式 但我的代码对于 txt 和 pdf 文件工作正常 我已阅读有关 Webview 的文档 它指出它支持查看上述文档 下面是我的 d
  • 在 R 中执行行之间的计算

    我试图弄清楚如何跨行 或行之间 进行计算 我尝试过查找此内容 但显然我的 Google Fu 今天并不强大 因为我只是找不到正确的搜索词 这是我要处理的数据类型的超级简化示例 mydf lt data frame pair rep 1 2
  • Linkedin API 用户分享统计

    也许我错过了有关 LinkedIn API 端点的一些信息 但在我看来 Linkedin API 没有端点 URL个人资料 墙 发布的帖子统计 喜欢 评论 甚至有机搜索统计数据 展示次数 点击次数 参与度 这很奇怪 因为公司 API 对于其
  • 连接被拒绝! selenium 服务器是否在边缘启动了 nightwatch

    我已经创建了一个项目 它是一个 vue js 应用程序 有一小部分单元测试 玩笑 和一个端到端测试 夜更 当我尝试使用 npm 运行端到端测试时 我得到 Error retrieving a new session from the sel
  • 在Delphi中使用接口有哪些优点和缺点?

    我已经使用 Delphi 类有一段时间了 但从未真正开始使用接口 我已经读过一些关于它们的内容 但想了解更多 我想听听您在使用 Delphi 中的接口时遇到的优点和缺点 包括编码 性能 可维护性 代码清晰度 层分离以及一般而言您能想到的任何