設計模式、用Delphi實現---->Builder模式 (轉)
Builder
起源
中的Builder模式在基本Builder模式進行了擴充套件。更多Builder模式的資料請參閱 [Gam+]:namespace prefix = o ns = "urn:schemas--com::office" />
目的
將一個複雜的的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示
動機
一個生成器(Builder)與抽角工廠(Abstract Factory)從概念上來看有點類似。但不同的是,生成器將單一複雜的類的各個部件透過引用不同的構造器生成,然面抽象工廠則讓你建立整個具體的類。比如說:一個建築工可以構造房子、別墅、辦公室。你可僱用不同的建築工來構造磚房、木房。雖然你可指定房子的形狀、大小。而其他肋手用來構造房子的部門、並非全部。比如構建窗了,門,停車場。
應用
下面的例子先引入了一個抽象類TabstractFormBuilder和它的兩個具體子類TredFormBuilder、TblueFormBuilder。TabstractFormBuilder宣告瞭一些類的構造器
type
TAbstractFormBuilder = class
private
FForm: TForm;
procedure BuilderFormClose(Sender: T; var Action: TCloseAction);
protected
function GetForm: TForm; virtual;
public
procedure CreateForm(AOwner: TComponent); virtual;
procedure CreateSpeeutton; virtual; abstract;
procedure CreateEdit; virtual; abstract;
procedure CreateLabel; virtual; abstract;
property Form: TForead GetForm;
end;
type
TRedFormBuilder = class(TAbstractFormBuilder)
private
FNextLeft, FNextTop: Integer;
public
procedure CreateForm(AOwner: TComponent); overr;
procedure CreateSpeedButton; override;
procedure CreateEdit; override;
procedure CreateEdit; override;
end;
type
TBlueFormBuilder = class(TAbstractFormBuilder)
private
FNextLeft, FNextTop: Integer;
public
procedure CreateForm(AOwner: TComponent); override;
procedure CreateSpeedButton; override;
procedure CreateEdit; override;
procedure CreateLabel; override;
end;
有上面的介面中:
· 宣告瞭一個建立抽象產品物件的介面:TAbstractFormBuilder
¨ 類TAbstractFormBuilder有三個抽象的工廠方法CreateForm、CreateSpeedButton、CreateEdit、CreateEdit
· TBlueFormBuilder、TRedFormBuilder用來實現建立具體產品物件的方法
執行的時候,客戶一個具體類的公共構造器來建立它某一些部分,具體的構造器例項的呼叫方法如下:
procedure TForm1.Create3ComponentFormUsingBuilder(ABuilder: TAbstractFormBuilder);
var
NewForm: TForm;
begin
with ABuilder do begin
CreateForm(Application);
CreateEdit;
CreateSpeedButton;
CreateLabel;
NewForm := Form;
if NewForm <> nil then NewForm.Show;
end;
end;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991420/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式、用Delphi實現---->Singleton 模式 (轉)設計模式
- 設計模式、用Delphi描述-->Visitor模式 (轉)設計模式
- 設計模式、用Delphi描述-->Factory Method模式 (轉)設計模式
- 設計模式、用Delphi描述-->Abstract Factory模式 (轉)設計模式
- 設計模式、用Delphi描述-->Lock pattern (轉)設計模式
- 設計模式:Builder模式概述設計模式UI
- 設計模式、用Delphi描述-->Reference Count pattern (轉)設計模式
- Builder設計模式UI設計模式
- Delphi設計模式-Abstract Factory (轉)設計模式
- Java設計模式之builder模式Java設計模式UI
- 設計模式-建造者模式(Builder)設計模式UI
- Singleton模式之Delphi實現 (轉)模式
- [用設計模式鍛鍊C#系列]之Builder (轉)設計模式C#UI
- 設計模式-生成器模式Builder設計模式UI
- 【設計模式】- 生成器模式(Builder)設計模式UI
- 設計模式--建造者模式(Builder Pattern)設計模式UI
- 【設計模式筆記】(二)- Builder模式設計模式筆記UI
- Java設計模式----建造者模式(Builder)Java設計模式UI
- 設計模式之-建造者模式-Builder設計模式UI
- 設計模式實戰系列之@Builder和建造者模式設計模式UI
- 我所理解的設計模式(C++實現)——建造者模式(Builder Pattern)設計模式C++UI
- 設計模式(五)Builder構建者模式設計模式UI
- Android設計模式探討--Builder模式Android設計模式UI
- 《設計模式》 - 3. 建立者模式( Builder )設計模式UI
- Android設計模式探討 Builder模式Android設計模式UI
- 設計模式--建造者模式Builder(建立型)設計模式UI
- Java設計模式之建造者模式(Builder)Java設計模式UI
- 設計模式Builder之惑設計模式UI
- 使用Builder設計模式實現不變性 - DZone JavaUI設計模式Java
- 用Python實現設計模式——單例模式Python設計模式單例
- 用Python實現設計模式——工廠模式Python設計模式
- 兩種Delphi實現Singleton模式方法 (轉)模式
- 重識設計模式-建造者模式(Builder Pattern)設計模式UI
- 設計模式十: 生成器模式(Builder Pattern)設計模式UI
- C#設計模式-建造者模式(Builder Pattern)C#設計模式UI
- 人人都會設計模式---建造者模式--Builder設計模式UI
- Scala 與設計模式(二):Builder 建立者模式設計模式UI
- C#設計模式系列:建造者模式(Builder)C#設計模式UI