zoukankan      html  css  js  c++  java
  • 接口的委托实现(通过接口)

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
      IBaseInterface = interface
        procedure Buy(s : string);
      end;
    
      IMyInterface = interface(IBaseInterface)
        procedure Sell(s: string);
      end;
    
      TBaseClass = class(TInterfacedObject, IMyInterface)
        procedure Buy(s : string);
        procedure Sell(s: string);
      end;
    
      TMyClass = class(TInterfacedObject, IBaseInterface)
      private
        ITest: IBaseInterface;
      protected
        property service: IBaseInterface read ITest implements IBaseInterface;
      public
        constructor Create(AClass: TClass);
        destructor Destory(AClass: TClass);
    
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    { TBaseClass }
    
    procedure TBaseClass.Buy(s: string);
    begin
      ShowMessage('Buy ' + s);
    end;
    
    procedure TBaseClass.Sell(s: string);
    begin
      ShowMessage('Sell ' + s);
    end;
    
    { TMyClass }
    
    constructor TMyClass.Create(AClass: TClass);
    var
      baseObj: IMyInterface;
    begin
      baseObj := TBaseClass(AClass.NewInstance);
      ITest := baseObj;
    end;
    
    destructor TMyClass.Destory(AClass: TClass);
    begin
      ITest := nil;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      test: TMyClass;
    begin
      try
        test := TMyClass.Create(TBaseClass);
        test.service.Buy('aa');
      finally
        test.Free;
      end;
    end;
    
    end.
  • 相关阅读:
    springboot项目启动成功后执行一段代码的两种方式
    ELK相关资料整理
    Golang指针解析
    Golang文件操作
    Go Channel介绍
    Go语言new和make的区别
    SpringBoot+AOP实现记录操作日志和异常日志,并保存到数据库
    【面试专栏】Java 阻塞队列
    Linux安装Jenkins并构建SpringBoot工程
    Linux安装git
  • 原文地址:https://www.cnblogs.com/devinblog/p/5201968.html
Copyright © 2011-2022 走看看