接口小用

原创 2004年12月29日 22:29:00

很多人总是问我,接口怎么用,什么时候用它。猛地被他们一问,只能讲讲以前的应用,发现都不是非常容易理解,今天发现有一个实例,还是非常好讲解的。

我们有一个对数据进行快速下载的函数。
procedure TDataSwitch.DownTable(ASQLStr, ATableName: string);
var
  tmpDataSet: TDataSet;
  tmpDestDataSet: TDataSet;
begin
    SystemSetup.ServerAccess.OpenSQL(ASQLStr, tmpDataSet);
    SystemSetup.ClientAccess.OpenSQL('select * from ' + ATableName + '_temp', tmpDestDataSet);
    try
      .....
      while not tmpDataSet.Eof do
      begin
        NewRecordToTable(tmpDataSet, tmpDestDataSet);
        tmpDataSet.Next;
      end;    // while
    finally
      tmpDataSet.Free;
      tmpDestDataSet.Free;
    end; 
end
//我们想在外部能够知道执行快速发布的进度。一般情况下怎么办呢?
//要么传递一个委托方法进来,要么从这内部发消息到外部去等等。这些办法用起来还真麻烦,而且写代码后让人看着还真是不舒服。我们提供一个Iprocess接口就好了。
  IProcess = Interface
    procedure ProcessChange(AMax, APos: Integer);
  end;

更改代码为
procedure TDataSwitch.DownTable(ASQLStr, ATableName: string; AProcess: IProcess);
var
  tmpDataSet: TDataSet;
  tmpDestDataSet: TDataSet;
begin
    SystemSetup.ServerAccess.OpenSQL(ASQLStr, tmpDataSet);
    SystemSetup.ClientAccess.OpenSQL('select * from ' + ATableName + '_temp', tmpDestDataSet);
    try
      .....
      while not tmpDataSet.Eof do
      begin
        NewRecordToTable(tmpDataSet, tmpDestDataSet);
//新加入的
        if AProcess <> nil then
          AProcess.ProcessChange(tmpDataSet.RecordCount, tmpDataSet.RecNo);

        tmpDataSet.Next;
      end;    // while
    finally
      tmpDataSet.Free;
      tmpDestDataSet.Free;
    end; 
end;
//谁想知道进度,只要实现IProcess接口就好了,我们还可以让窗体来实现。
  TFrm_DataSwtich = class(TForm, IProcess)
   ...
    private
    { Private declarations }
    procedure ProcessChange(AMax, APos: Integer);
   end

procedure TFrm_DataSwtich.ProcessChange(AMax, APos: Integer);
begin
  ProgressBar1.Max := AMax;
  ProgressBar1.Position := APos;
  ProgressBar1.Invalidate;
end;

调用就简单了。
...
DataSwitch.DownTable(ASQLStr, ATableName, self);
...

java中接口有什么作用?

接口的作用就是把使用接口的人和实现接口的人分开,实现接口的人不必要关心谁去使用,而使用接口的人也不用关心谁实现的接口,由接口将他们联系在一起。以上像一段绕口令,那么通过下面的几段程序解释: ...
  • rongwenbin
  • rongwenbin
  • 2014年10月20日 17:00
  • 807

接口实现多态

由于继承有单根性这一个特点,也就是说一个类只能继承与一个父类,但是有时候我们需要继承多个类,那莪这样就有了接口的出现, 接口实现让一个类可以继承多个类,继承的多个类实际上就是继承的接口接口使用int...
  • NextStand
  • NextStand
  • 2016年05月26日 21:52
  • 3877

如何做一个简单的开放接口(1)-功能设计

第一篇,包括:缘起、技术需求、功能规划、功能设计。
  • stationxp
  • stationxp
  • 2015年05月17日 19:16
  • 7429

Spark入门——1:RDD及编程接口

RDD是Spark的核心,也是整个Spark的架构基础。spark与mapreduce相比,前者提供了更加丰富的编程接口给程序猿们。所以下面主要说明RDD的基本概念,以及其重要接口。       R...
  • gongcan1219
  • gongcan1219
  • 2015年05月10日 21:55
  • 1328

Java接口修饰符详解-可以修饰接口的修饰符

Java接口修饰符详解 可以修饰接口的修饰符有(C D) A private   B protected   C  final    D abstract 接口就是提供一种统一的”...
  • u014304688
  • u014304688
  • 2017年05月05日 15:12
  • 12610

Java接口特征与细节

接口 书面定义: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 在j...
  • u012768347
  • u012768347
  • 2016年04月02日 23:50
  • 906

Unity之接口总结

接口: 1.属于任何类或结构的一组相关功能 2.定义:interface关键字定义,可由方法,属性,事件,索引器这四种成员类型的任意组合组成 例子:interface EatBe...
  • u010718707
  • u010718707
  • 2014年12月16日 21:23
  • 3558

Spring为什么Autowired注入的是接口

1.Spring怎么知道注入哪个实现? As long as there is only a single implementation of the interface and that imple...
  • luman1991
  • luman1991
  • 2017年02月03日 09:54
  • 7132

详解Socket接口

要学Internet上的TCP/IP网络编程,必须深刻理解Socket接口。之所以另起一篇文章来讨论Socket,是因为它是网络通信架构的基础,重要性不言而喻。所谓socket通常也称作“套接字”,用...
  • u012861978
  • u012861978
  • 2016年03月23日 14:36
  • 2162

API接口管理平台-rap

因为公司多个项目组并行,多次出现因为分支交叉使用导致影响其他项目组线上功能的情况,制定了几条规则来解决这一情况,其中一条规则就是对于各个项目组API接口的管理工作。 由于上游研发流程的不规范,各项目组...
  • nevermore_33
  • nevermore_33
  • 2016年02月25日 11:18
  • 9379
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:接口小用
举报原因:
原因补充:

(最多只允许输入30个字)