compositeunit1.pas

来自「设计模式delphi版给想学delphi的朋友一个很有价值的参考」· PAS 代码 · 共 75 行

PAS
75
字号
unit CompositeUnit1;

interface
type
  TComposite = class;

  TComponent = class
  public
    constructor Create; virtual;
    function GetComposite(): TComposite; virtual;
  end;

  TComposite = class(TComponent)
  public
    constructor Create; virtual;
    function GetComposite(): TComposite; override;
    procedure add(aCompoent: Tcomponent); virtual;
    procedure Remove(aCompoent: Tcomponent);virtual;
  end;

  TLeaf = class(TComponent)
  public
    constructor Create; virtual;
  end;
procedure Test;

implementation

constructor TComponent.Create;
begin
//....
end;

function TComponent.GetComposite(): TComposite;
begin
//....
end;

constructor TComposite.Create;
begin
//....
end;

function TComposite.GetComposite(): TComposite;
begin
//....
end;

procedure TComposite.add(aCompoent: Tcomponent);
begin
//....
end;

procedure TComposite.Remove(aCompoent: Tcomponent);
begin
//....
end;

constructor TLeaf.Create;
begin
//....
end;

procedure Test;
var
  aComposite, test: TComposite;
  aLeaf: TLeaf;
  aComponent,someComponent: TComponent;
begin
  aComposite.Create;
  aLeaf.Create;

  aComponent := aComposite;
  if (test is aComponent.GetComposite.ClassType) then
    test.add(someComponent); //糤

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?