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 + -
显示快捷键?