⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compositeunit1.pas

📁 DELPHI设计模式书籍
💻 PAS
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -