ccreatepattern.pas

来自「Delphi深度探索,Delphi深度探索(第二版)」· PAS 代码 · 共 129 行

PAS
129
字号
unit CCreatePattern;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TAbstractButtonFactory=class(TObject)
  public
    class function CreateBigBtn():TButton;virtual;
    class function CreateSmallBtn():TButton;virtual;
  end;

  TButtonFactoryForA=class(TAbstractButtonFactory)
  public
    class function CreateBigBtn():TButton;override;
    class function CreateSmallBtn():TButton;override;
  end;

  TButtonFactoryForB=class(TAbstractButtonFactory)
  public
    class function CreateBigBtn():TButton;override;
    class function CreateSmallBtn():TButton;override;
  end;

  TSingleConfig=class(TObject)
  private
    FConfigPath: string;
    constructor Create;
    procedure SetConfigPath(const Value: string);
  public
    class function GetInstance():TSingleConfig;
    //
    property ConfigPath:string read FConfigPath write SetConfigPath;
    //...
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  GlobalConfig:TSingleConfig=nil;

procedure TForm1.FormCreate(Sender: TObject);
begin
  TButtonFactoryForA.CreateBigBtn;
end;

{ TButtonFactoryForA }

class function TButtonFactoryForA.CreateBigBtn: TButton;
begin
  Result:=inherited CreateBigBtn();
  Result:=TButton.Create(nil);
  Result.Height:=40;
  Result.Width:=40;
end;

class function TButtonFactoryForA.CreateSmallBtn: TButton;
begin
  Result:=TButton.Create(nil);
  Result.Height:=20;
  Result.Width:=20;
end;

{ TButtonFactoryForB }

class function TButtonFactoryForB.CreateBigBtn: TButton;
begin
  Result:=TButton.Create(nil);
  Result.Height:=36;
  Result.Width:=36;
end;

class function TButtonFactoryForB.CreateSmallBtn: TButton;
begin
  Result:=TButton.Create(nil);
  Result.Height:=16;
  Result.Width:=16;
end;

{ TAbstractButtonFactory }

class function TAbstractButtonFactory.CreateBigBtn: TButton;
begin
  Showmessage('Test');
  Result:=nil;
end;

class function TAbstractButtonFactory.CreateSmallBtn: TButton;
begin

end;

{ TSingleConfig }

constructor TSingleConfig.Create;
begin
  //什么也不做
end;

class function TSingleConfig.GetInstance: TSingleConfig;
begin
  if not Assigned(GlobalConfig) then
    GlobalConfig:=TsingleConfig.Create();
  Result:=GlobalConfig;
end;

procedure TSingleConfig.SetConfigPath(const Value: string);
begin
  FConfigPath := Value;
end;

end.

⌨️ 快捷键说明

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