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