Delphi 灵活运用接口(interface), 隐藏核心代码, 设计低耦合程序.

【Delphi 基础知识 44】接口interface的应用 总结为一句话就是:接口只告诉你要做什么,而类会告诉你应该怎么做下面是最简单的接口实现type['{08FA1638-75C2-4B93-B9C3-5D585FC831ED}'] // CTRL+SHIFT+G IDE会自动生成end;// TInterfacedObject负责接口管理,引用计数等,一般都会有它// IMyInterface上面定义的接口,表明这个类就是要实现该接口的功能publicend;beginend; 阅读详情
2007年04月18日 星期三 08:34

原创作品, 如有转载请注明出处.
COPYRIGHT BY cnCharles, ALL RIGHTS RESERVED.
delphi群: 16497064, blog: http://hi.baidu.com/cnCharles

程序详细代码如下

program InterfaceTest;

uses
     Forms,
     Main in 'Main.pas' {frmMain},
     Test in 'Test.pas' {frmTest},
     PubIntfs in 'PubIntfs.pas';

{$R *.res}

begin
     Application.Initialize;
     Application.CreateForm(TfrmMain, frmMain);
     Application.Run;
end.

//-----------------------------------------------------------------------------------------------

unit Main;
{
Date         : 2007-04-18
Author       : cnCharles
Description: 应用程序主界面单元
}
interface

uses
     Forms, Dialogs, StdCtrls, Classes, Controls, PubIntfs;

type
     TfrmMain = class(TForm, IMainFormTest)
       Button1: TButton;
       procedure Button1Click(Sender: TObject);
     private
       { Private declarations }
     protected
       procedure SayHello;
     public
       { Public declarations }
     end;

var
     frmMain: TfrmMain;

implementation

uses Test;

{$R *.dfm}

procedure TfrmMain.Button1Click(Sender: TObject);
begin
     with TfrmTest.Create(Self) do
       Show;
end;

procedure TfrmMain.SayHello;
begin
     ShowMessage('I''m a MainForm');
end;

end.

//--------------------------------------------------------------------------------------------------

unit Test;
{
Date         : 2007-04-18
Author       : cnCharles
Description: 接口测试
}
interface

uses
     Forms, StdCtrls, Classes, Controls;

type
     TfrmTest = class(TForm)
       Button1: TButton;
       procedure Button1Click(Sender: TObject);
     private
       { Private declarations }
     public
       { Public declarations }
     end;

var
     frmTest: TfrmTest;

implementation

uses PubIntfs;

{$R *.dfm}

procedure TfrmTest.Button1Click(Sender: TObject);
begin
     (Application.MainForm as IMainFormTest).SayHello;
end;

end.

//-------------------------------------------------------------------------------------------------

unit PubIntfs;
{
Date         : 2007-04-18
Author       : cnCharles
Description: 对外公开接口
}
interface

const
     IID_MainFormTest = '{6E6F8E9C-E147-47DF-95F8-A5861DD8F393}';
type
     IMainFormTest = interface
       [IID_MainFormTest]
       procedure SayHello;
     end;

implementation

end.

不 知道你们有没有看明白, 在Test单元中并没有uses(引用) Main单元, 但是但是确可以调用它的 SayHello方法. 在这个Demo中还要明白一个要点, Application.CreateForm 第一次创建派生自TForm 的Form即为程序的主窗体.     Application是一个全局变量, 定义在Forms单元中, 只要引用了Forms单元就可以引用Application,     Screen对象也与Application一样.

非易失存储器读写 24C256、IIC_SCL、IIC_SDA 阅读详情

相关推荐

LoFTR训练避坑指南:从零到一复现论文训练流程

本文是一份详细的LoFTR模型训练避坑指南,旨在帮助开发者从零开始复现论文训练流程。文章系统性地讲解了环境配置、数据准备、代码调试与显存优化等关键步骤,并针对常见的训练错误提供了解决方案,确保训练过程顺利进行。

weixin_29091837的博客 204

delphi 接口

学习 delphi 接口 一切都是纸老虎!!! 第四章          接口  前不久,有位搞软件的朋友给我出了个谜语。谜面是“相亲”,让我猜一软件术语。我大约想了一分钟,猜 出谜底是“面向对象”。我觉得挺有趣,灵机一动想了一个谜语回敬他。谜面是“吻”,也让他猜一软件术 语。一分钟之后,他风趣地说:“你在面向你美丽的对象时,当然忍不住要和她接口!”。我们同时哈哈大 笑起来。谈笑间,似

流年~~ 1万+

关于自制的《航空学报》latex模板(非官网模板)

《航空学报》的官网只提供了word模板,并且该期刊投稿只需要pdf版本不需要源文件。为方便latex爱好者撰写论文,提供该模板及说明给广大科研人士~

qq_37105055的博客 4691

delphi interface 总结

1、 interface 是申明了一些函数,自己本身没有定义部分,需要由继承它的类来实现函数。 2、interface 可以被不同的类继承,并且函数的实现方法各不相同。 3、继承interface 的类,必须包含全部interface的函数,否则无法编译通过。

hust平凡之路 的博客 6131

从Chiplet到UCIE:D2D互联技术如何重塑半导体设计生态

本文探讨了D2D互联技术在半导体设计中的革命性作用,从Chiplet到UCIE标准的演进如何重塑行业生态。详细分析了D2D互联的技术本质、架构选择及UCIE标准带来的变革,并展望了未来光学D2D和3D集成等趋势。高速互联接口技术的突破为AI加速器和计算芯片提供了更高带宽和能效。

weixin_29292535的博客 931

为JETSON TX2开发板部署YoloV5

参考资料一:nvidia为JETSON Tx2编译的pytorch 参考资料二:Jetson软件包下载 参考资料三:Tx2安装工具的使用 参考资料四: Jetson烧录工具 参考资料五: B站下载的行人视频 一、升级TX2系统版本到最新版(JetPack4.6) 我拿到的板子的版本太低了,在工作的过程中会有很多问题,因此要先升级到最新版 下载参考资料四中的烧录工具,在Ubuntu18.04中安装,只能,必须,一定是Ubuntu18.04 安装完成后使用非root用户启动SDK Manger,登录Nvi.

贱贱的剑 5887

Delphi interface 接口 总结

接口的功能类似抽象类, 通常定义一套通用的方法,但是在各实现类中有不同的实现方式。 以下几句来源于网络整理: (1)接口中只有方法、属性,没有字段。所以接口中的属性存取都必须通过方法。 (2)接口中的方法只有声明,没有实现。实现在类中完成。 (3)接口中的方法没有作用域。都是公开的,但是在类中则放到不同作用域。 (4)接口中的方法没有修饰字。可以认为它们都是抽象的。 (5)不能创建接口实例,要使用接口,必须在类中实现,通过类调用接口的方法。 (6)在类中必须声明和实现接口的所有方法。不像类继承中可以选择

944

【入坑存内计算一键指南】存内计算运算原理:算法优化、存储介质探究

本文探讨了存内计算及其面向的架构优化,尤其侧重于图算法优化和存内计算存储介质。文章介绍了存内计算的概念和意义,着重强调了存内计算解决了内存墙问题,提高了计算效率。针对图算法的优化,提出了基于位运算的创新方法,重塑了单源最短路径算法,并介绍了基于局部重叠度的链路预测算法优化设计。接着,文章详细讨论了存内计算存储介质,特别是非易失性存储器,比较了不同类型存储器的性能,并重点介绍了基于ReRAM的存内计算技术,包括其物理模型和交叉阵列结构。

一键难忘的博客 7065

Delphi 中 interface 如何使用 (chatGPT回答)?

本文详细介绍了Delphi中的Interface实现方式

sensor_WU 博客 725

【FISCO-BCOS】 八、ubuntu配置Java环境

ubuntu配置Java环境需根据自己的java版本号进行细节修改,本文以jdk11.0.18版本为例。ps:通过此法还可以查看java安装路径,但必须是环境配置成功的情况下才能使用。二、添加Java环境路径。四、检查java环境设置。

naihe_fish的博客 4308

IgH EtherCAT 从入门到精通:第 4 章 网络设备驱动选型与配置

摘要:本章详细介绍了EtherCAT主站网络设备驱动的选型与配置。IgH EtherCAT Master提供Generic通用驱动和Native原生驱动两种方案:Generic驱动通过Linux Socket接口实现,兼容性强但实时性较差;Native驱动通过修改网卡驱动绕过内核协议栈,具有更低延迟和更小抖动。文章具体分析了e1000/e1000e/igb/igc等Intel网卡驱动以及r8169/8139too等Realtek驱动的配置方法,并提供了驱动选型建议。对于实时性要求高的场景,推荐使用Nativ

从事嵌入式linux android驱动开发,拥有全栈能力 304

Delphi语法(六)接口

Delphi语法 第七章 接口

ForAnnuus的博客 1039

从零到一:ESP32与豆包大模型的RTC连续对话实现指南

文本实现ESP32S3 SparkBot与豆包大模型的RTC连续对话

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 4364

Interface 在DELPHI里的用法示例

任务描述: 我们有4个类,分别生成4个对象:A、B、C、D A需要调用B的方法,把数据送给B; 然后,B调用C的方法,把A送来的数据送给C; 然后,C调用D的方法,把B送来的数据送给D; 然后,当D使用完这个数据后,D要调用C的方法将处理结果通知C; C再把处理结果通知B; B再把处理结果通知A; 要求: 写A、B、C、D四个类的时候,要避免对象之间的紧密偶合。按传统做法,大概是让A、B、C、D四...

722

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

[转帖]接口的真相

接口的真相 接口(interface)在Delphi中是一个很有意思的东西。Delphi 3开始支持接口,从而形成了COM编程的基础;然而,Delphi中的接口也可用在非COM开发中,实现类似抽象类(含有抽象方法的类)的功能,从而弥补了Delphi中不能多继承(子类有多个同级父类)的不足。这里所讲的interface和一个单元中的interface部分是完全不同的概念,不要混淆。 说了半...

weixin_30821731的博客 318

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

delphi-多态(overload,override)与接口(interface)

转(智在居士草堂)先来聊聊重载问题(也叫超载,总之是那个Overload)吧。在同一个类中,出现多个同名的方法的现象就是Overload。联系起上面提到的兄弟俩,我想这更好理解。他们从外观上是相似的,不同的是某些“参数”,类型上可能各异或是个数上不同。在Delphi中,所有方法都默认是静态的,便于编译器和链接器解析调用。为实现超载,要在方法明的后面加上关键字overload,不然会产生

qhmao的专栏 5349

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Delphi Interface接口的定义

type   InterfaceName = interface(ancestorInterface)     ['{GUID}']     memberList   end; 接口定义中ancestorInterface 和 GUID是可选的。 在大多数方面,接口声明和类声明相似,但有以下限制:   1.memberList只能包含方法和属性,而不能包含数据成员(field).

FantasyWind-奇风的悟道之地 2146

【delphi】常用语言特性:接口、匿名方法、泛型

Delphi 自第 7 版以来已经有了长足的进步,目前已经到了最新版本的Delphi 12.2。当然也包括其他语言特性,例如多态性。

sensor_WU 博客 1659

Delphi 中的对象接口:Object Interfaces

本文详细介绍了Delphi中接口的相关知识,包括类型、集成、标识、调用和属性等

sensor_WU 博客 1307

Delphi入门

​var 变量名:数据类型;​不指定常量类型指定常量类型“子界”(Subrange)是 Pascal 语言中的一个概念,它允许程序员定义一个变量的取值范围,以确保该变量只接受特定范围内的值。这在编写安全和高效的代码时非常有用,因为它通过限制值的范围来减少错误的发生。子界类型可以用于整数、字符和枚举类型等。type子界名 = 下界..上界;

qq_24867003的博客 5255

Delphi中Interface接口的使用方法

  unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type   //定义接口如果接口独立成一个文件,则在应用程序中和实现程序中都要引用该接口文件;    ICar = interfa

Chang的专栏 1万+

Delphi 的接口机制浅探

目 录=============================================================================== ⊙ 接口的引用计数管理    接口指针总是被初始化为 nil    接口指针赋值为对象    接口指针赋值为接口指针    接口引用计数使用规则小结 ⊙ 接口对象的编译器实现    接口对象的内存空间

努力工作的专栏 948

Interface的两种使用方式

Interface的两种使用方式接口是我们在编程中经常使用的,原来对于使用方式一直模模糊糊的,这两天整理了一下。作为菜鸟,有不对的地方请多多指教,不喜勿喷。 通过set方法进行传递。例如Activity中去调用Fragment里的方法的情况。这样可以直接在Fragment调用接口方法。代码如下: 1.首先定义了一个接口 public interface TextViewInfoListener {

朱鹏鹏的专栏 1万+

C#调用Delphi接口(ITest = interface)

C#里调用Delphi中导出的接口实现

cmd9x的专栏 1593
上一篇: Delphi中Interface接口的使用方
下一篇: Delphi接口
Dcdu
博客等级 码龄21年 44粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值