Delphi設計模式-Abstract Factory (轉)
的描述可以參考[1],下面舉一箇中的例子。
通常Delphi中的Form都是自動Create,也可以在Form中寫程式碼來建立(通常是在主Form中)。下面以Abstract Factory來建立Form。
//unit AbstractF
TAbstractFactory = class
public
function CreateFo: TForm;virtual;abstract;
end;
//unit ConcreteFA
TConcreteFactoryA = class(TAbstractFactory)
public
function CreateForm : TForm; overr;
end;
{ TConcreteFactoryB }
function TConcreteFactoryA.CreateForm: TForm;
begin
Result := TfrmFormA.Create(Application);
Result.ShowModal;
end;
//unit ConcreteFB
TConcreteFactoryB = class(TAbstractFactory)
public
function CreateForm : TForm; override;
end;
{ TConcreteFactoryB }
function TConcreteFactoryB.CreateForm: TForm;
begin
Result := TfrmFormB.Create(Application);
Result.ShowModal;
end;
//主Form
unit MainFrm;
interface
uses
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, AbstractF;
type
TfrmMain = class(TForm)
btnConcreteA: TButton;
btnContreteB: TButton;
procedure btnConcreteAClick(Sender: T);
procedure btnContreteBClick(Sender: TObject);
private
{ Private declarations }
FAbstractFactory: TAbstractFactory;
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
uses ConcreteFA, ConcreteFB;
{$R *.dfm}
procedure TfrmMain.btnConcreteAClick(Sender: TObject);
begin
FAbstractFactory:= TConcreteFactoryA.Create;
FAbstractFactory.CreateForm;
FAbstractFactory.Free;
end;
procedure TfrmMain.btnContreteBClick(Sender: TObject);
begin
FAbstractFactory:= TConcreteFactoryB.Create;
FAbstractFactory.CreateForm;
FAbstractFactory.Free;
end;
end.
[參考資料]
1.《設計模式-可複用面向的基礎》
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-990256/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式-抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式--抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式實戰 - 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 設計模式實戰 – 抽象工廠模式(Abstract Factory Pattern)設計模式抽象
- 【圖解設計模式系列】The Abstract Factory Pattern: 抽象工廠模式圖解設計模式抽象
- 奇幻RPG(人物構建 與 Abstract Factory模式)模式
- Abstract Factory(抽象工廠)——物件建立型模式抽象物件模式
- 《設計模式》 - 2. 工廠模式( Factory )設計模式
- 設計模式--工廠方法模式(Factory Method Pattern)設計模式
- 設計模式系列之工廠模式三兄弟(Factory Pattern)設計模式
- PHP設計模式(一)簡單工廠模式 (Simple Factory For PHP)PHP設計模式
- Selenium4+Python3系列(十一) - Page Factory設計模式Python設計模式
- 使用C# (.NET Core) 實現抽象工廠設計模式 (Abstract Pattern)C#抽象設計模式
- 從Delphi到Lazarus——Delphi轉換器
- 使用C# (.NET Core) 實現簡單工廠(Simple Factory) 和工廠方法設計模式 (Factory Method Pattern)C#設計模式
- 轉載-Java設計模式之DecoratorJava設計模式
- 玩轉 iOS 開發:《iOS 設計模式 — 代理模式》iOS設計模式
- Pipeline模式與Factory+Provider模式的應用模式IDE
- [DELPHI]單例模式(singleton) 陳省單例模式
- 從Delphi到Lazarus——我的程式設計之路程式設計
- 玩轉 iOS 開發:《iOS 設計模式 — 工廠模式》iOS設計模式
- 簡單工廠模式( Simple Factory Pattern )模式
- PHP高階特性-反射Reflection以及Factory工廠設計模式的結合使用[程式碼例項]PHP反射設計模式
- Java設計模式——模板設計模式Java設計模式
- 設計模式(四)Singleton設計模式設計模式
- 設計模式----工廠設計模式設計模式
- 設計模式-工廠設計模式設計模式
- 設計模式之單例設計模式設計模式單例
- 【設計模式】設計模式(一)-- 大話設計模式讀書筆記設計模式筆記
- 【設計模式】漢堡中的設計模式——策略模式設計模式
- 【設計模式】代理模式設計模式
- 設計模式-代理模式設計模式
- 設計模式-策略模式設計模式
- 設計模式-模板模式設計模式
- 設計模式~代理模式設計模式
- 設計模式——模板模式設計模式
- 設計模式----代理模式設計模式
- 設計模式——策略模式設計模式
- 設計模式——代理模式設計模式