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一样.

Windows下Fortran调用CGNS库的完整踩坑实录:从HDF5、CMake到VS2019+IVF2020的保姆级配置 本文详细记录了在Windows环境下使用Fortran调用CGNS库的完整配置过程,涵盖HDF5安装、CMake配置、VS2019与IVF2020集成等关键步骤。通过实战经验分享,帮助开发者解决常见编译错误和链接问题,实现高效的Fortran与CGNS库集成。 阅读详情

相关推荐

Tessent_StdcellLib

第二种为 Tessent Cell lib,既可用于功能仿真,也可以用于测试逻辑插入。lib包含了用于仿真的功能信息,也包含DFT cell属性。如何使用tessent工具将stdcell verilog 仿真模型转换为tessent自己的lib。运行后工具会生成一个atpg的lib文件,打开文件,找到一个带SI的DFF,只有功能描述。tessnt lib分为两种,第一种为ATBG lib,可以用于仿真;打开生成的lib文件,多了dft_cell_selection。第二部:编写attributes文件。

qq_40411444的博客 2134

delphi 接口

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

流年~~ 1万+

java对接海康实现页面实时播放和回放

前言:之前已经写过一篇关于视频的文章,因为觉得有很多优化的地方,也谢谢同行们加我微信跟我提了一些需求和意见,所以在过年的假期重新写了一个比较能扩张的版本。 上一个版本的连接:https://blog.csdn.net/weixin_45848110/article/details/119363602 与之前的版本不同之处: 1.不需要安装ffmpeg 2.不需要安装nginx 3.直接运行jar即可 4.之前是完全脱离海康sdk,回放的录像是保存到本地服务,现在是直接在海康硬盘录像机获取录像回放 5.实时播

weixin_45848110的博客 1万+

delphi interface 总结

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

hust平凡之路 的博客 6131

Windows Server双机热备实战:用IIS+ARR+NLB搭建高可用Web服务(附避坑指南)

本文详细介绍了在Windows Server环境下,利用IIS、ARR(Application Request Routing)和NLB(Network Load Balancing)构建高可用Web服务的实战方案。通过双机热备架构,实现从网络层到应用层的全面冗余与智能流量分发,并提供了关键的配置步骤、常见避坑指南及性能调优建议,确保企业级Web服务的连续性与可靠性。

weixin_29210759的博客 383

Delphi interface 接口 总结

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

944

几款支持国标GB28181的平台以及视频监控设备接入的配置方法(Web端无插件播放)

GB28181解决的一个主要问题就是如何远程、跨网络、跨区域、跨级别的访问网络中的监控设备(包括IPC、NVR等),本文介绍几款G28181平台的接入配置方法,适合有监控视频摄像头的远程接入和预览需求的人群参考使用。

一名高级工程师的博客 1万+

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

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

sensor_WU 博客 725

C# 调用halcon中visualize_object_model_3d显示点云

3.1 判断线程是否为空,如果为空,则新创建,如果不为空,则中断线程,清空窗口后再次执行创建操作3.2 创建:调用show()方法实例化显示类的对象,传入显示参数,将线程testvisual 绑定 在 类对象的action方法上(此处action方法内部,只调用了visualize_object_model_3d算子)3.3 启动线程。

weixin_42362219的博客 1402

【模型实战】MiMo-VL-7B讲解与实战

维度成绩MMMU70.6(图像理解最难测试之一)VideoMME70.8(视频理解标杆)59.4(超越78B参数模型)56.1(超过专用GUI模型)Elo评分开源VLM排名第一(7B~72B)社区热度过去一个月下载超1,600次(RL+SFT)📌一句话概括MiMo-VL 是目前性能最强、推理最稳、体验最佳、生态最全的7B级开源视觉语言模型。

m0_47867638的博客 1197

Delphi语法(六)接口

Delphi语法 第七章 接口

ForAnnuus的博客 1039

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

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

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

[转帖]接口的真相

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

weixin_30821731的博客 318

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

qhmao的专栏 5349

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、付费专栏及课程。

余额充值