5,388
社区成员
发帖
与我相关
我的任务
分享
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
IWasher = interface
['{978C4D69-2B79-451D-A8DA-E843EB28138B}']
procedure WashClothing;
end;
IRemover = interface
['{9431B14D-2A6D-4F08-997F-47F0A62CE7D5}']
procedure MoveThing;
end;
TWasher = class(TInterfacedObject,IWasher)
procedure WashClothing;
end;
TRemover = class(TInterfacedObject,IRemover)
procedure MoveThing;
end;
TSvrCenter = class(TInterfacedObject, IWasher,IRemover)
private
FWasher: TWasher;
function FindRemover :IRemover;
public
constructor Create;
destructor Destroy;override;
property Washer :TWasher read FWasher implements IWasher;
property Remover :IRemover read FindRemover implements IRemover;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TSvrCenter }
constructor TSvrCenter.Create;
begin
inherited;
FWasher := TWasher.Create;
end;
destructor TSvrCenter.Destroy;
begin
FWasher.Free;
inherited;
end;
function TSvrCenter.FindRemover: IRemover;
begin
result := TRemover.create;
end;
{ TRemover }
procedure TRemover.MoveThing;
begin
ShowMessage('move');
end;
{ TWasher }
procedure TWasher.WashClothing;
begin
ShowMessage('Wash');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
sv :TSvrCenter;
begin
//sv := nil;
sv.Washer.WashClothing;
end;
end.
Test = class
public
procedure T1();
end;
procedure Test.T1;
begin
ShowMessage('Test.T1');
end;
procedure TForm1.Button1Click(Sender: TObject);
var
T: Test;
begin
T.T1;
end;