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.
  • 相关阅读:
    12-2 mysql 查询
    12-1 mysql的增删改减
    12-1 上午mysql 基本语句
    [题解] [FJOI2016] 建筑师
    [题解] [CF932E] TeamWork
    [题解] [Codechef] CNTDSETS
    [题解] [清华集训 2017] 榕树之心
    [题解] [AGC013D] Piling Up
    [题解] [CQOI2011] 放棋子
    [题解] [ZJOI2017] 仙人掌
  • 原文地址:https://www.cnblogs.com/devinblog/p/5201968.html
Copyright © 2011-2022 走看看