Delphi のビルダー モードは、基本的なビルダー モードを拡張したものです。ビルダーモードの詳細については、[Gam+] を参照してください。
複雑なオブジェクトの構築をその表現から分離し、同じ構築プロセスで異なる表現を作成できるようにする
ビルダーは概念的には抽象ファクトリーに似ています。ただし、ジェネレーターはさまざまなコンストラクターを参照することによって 1 つの複合クラスのさまざまなコンポーネントを生成するのに対し、抽象ファクトリーでは具象クラス全体を作成できるという点が異なります。たとえば、建設業者は住宅、別荘、オフィスを建設できます。レンガ造りの家と木造の家を建てるために、さまざまな建築業者を雇うことができます。家の形や大きさは指定できますが。そして、他のリブは家の一部を構築するために使用されますが、すべてではありません。たとえば、窓、ドア、駐車場を構築します。
次の例では、最初に抽象クラス TabstractFormBuilder とその 2 つの具体的なサブクラス TredFormBuilder および TblueFormBuilder を紹介します。 TabstractFormBuilder はいくつかのクラス コンストラクターを宣言します
タイプ
TAbstractFormBuilder = クラス
プライベート
Fフォーム: Tフォーム;
プロシージャ BuilderFormClose(Sender: TObject; var Action: TCloseAction);
保護された
関数 GetForm: TForm;
公共
プロシージャ CreateForm(AOwner: TComponent);
プロシージャ CreateSpeedButton ;
プロシージャの作成編集;
プロシージャ CreateLabel;
プロパティ フォーム: TForm 読み取り GetForm;
終わり;
タイプ
TRedFormBuilder = クラス(TAbstractFormBuilder)
プライベート
FNextLeft、FNextTop: 整数。
公共
プロシージャ CreateForm(AOwner: TComponent);
プロシージャ CreateSpeedButton オーバーライド;
プロシージャ CreateEdit をオーバーライドします。
プロシージャ CreateEdit をオーバーライドします。
終わり;
タイプ
TBlueFormBuilder = クラス(TAbstractFormBuilder)
プライベート
FNextLeft、FNextTop: 整数。
公共
プロシージャ CreateForm(AOwner: TComponent);
プロシージャ CreateSpeedButton オーバーライド;
プロシージャ CreateEdit をオーバーライドします。
プロシージャ CreateLabel ;
終わり;
上記のインターフェイスの中には次のものがあります。
? 抽象製品オブジェクトを作成するためのインターフェイスを宣言します: TAbstractFormBuilder
¨ クラス TAbstractFormBuilder には、CreateForm、CreateSpeedButton、CreateEdit、CreateEdit という 3 つの抽象ファクトリ メソッドがあります。
? TBlueFormBuilder および TRedFormBuilder は、特定の製品オブジェクトを作成するためのメソッドを実装するために使用されます。
実行時に、クライアント プログラムは特定のクラスのパブリック コンストラクターを呼び出して、その一部を作成します。特定のコンストラクター インスタンスの呼び出しメソッドは次のとおりです。
プロシージャ TForm1.Create3ComponentFormUsingBuilder(ABuilder: TAbstractFormBuilder);
変数
新しいフォーム: TForm;
始める
ABuilder を使って始めましょう
CreateForm(アプリケーション);
作成編集;
CreateSpeedButton;
ラベルの作成;
新しいフォーム := フォーム;
NewForm <> nil の場合、NewForm.Show;
終わり;
終わり;