ビルダーパターンの定義:複雑なオブジェクトの構築を表現から分離して、同じ構造プロセスが異なる表現を作成できるようにします。
ビルダーパターンは、複雑なオブジェクトを段階的に作成することです。これにより、ユーザーは複雑なオブジェクトのタイプとコンテンツを指定するだけで作成できます。ユーザーは、特定の内部構造の詳細を知りません。ビルダーモードは、抽象的な工場モードに非常に似ています。
ビルダーモードを使用する理由
コンポーネントから複雑なオブジェクトを構築するプロセスを分離することです。注:デカップリングプロセスとコンポーネントです。
複雑なオブジェクトには、車などの大量のコンポーネントがあるだけでなく、ホイール、ステアリングホイール、さまざまな小さな部品などがありますこれらの部品を自動車用の車に組み立てるために、この組み立てプロセスも非常に複雑で(優れたアセンブリテクノロジーが必要です)、ビルダーモデルはコンポーネントとアセンブリプロセスを分離することです。
ビルダーモードの使用方法
まず、複雑なオブジェクトが複数のコンポーネントで構成されていると仮定します。
まず、複雑なオブジェクトのさまざまなコンポーネントを作成する方法を定義するインターフェイスが必要です。
コードコピーは次のとおりです。
パブリックインターフェイスビルダー{
//コンポーネントAを作成します。たとえば、車輪を作成します
void buildparta();
//車のステアリングホイールの作成など、コンポーネントBを作成する
void buildpartb();
//自動車エンジンの作成など、コンポーネントCを作成します
void buildpartc();
//最終的なアセンブリ結果を返します(最後の組み立てられた車に戻ります)
//完成品のアセンブリプロセスはここでは実行されませんが、以下のディレクタークラスに転送されます。
//これにより、デカップリングプロセスとコンポーネントが実現します
製品getResult();
}
ディレクターを使用して最後の複雑なオブジェクトを構築すると、上記のビルダーインターフェイスがコンポーネントを作成する方法(複雑なオブジェクトはこれらのコンポーネントで構成されています)をカプセル化します。つまり、ディレクターのコンテンツが最終的にコンポーネントを最終的な製品に組み立てる方法です。
コードコピーは次のとおりです。
パブリッククラスディレクター{
プライベートビルダービルダー。
パブリックディレクター(ビルダービルダー){
this.builder = builder;
}
//最後に、PARTA PARTB PARTCは複雑なオブジェクトを形成するために使用されます
//これはホイールステアリングホイールとエンジンを車に組み立てるプロセスです
public void construct(){
builder.buildparta();
builder.buildpartb();
builder.buildpartc();
}
}
Builder ConcreteBuilderの特定の実装:
1.インターフェイスビルダーを完成させて、製品コンポーネントを構築または組み立てます。
2。作成したい具体的なものを定義および明確にします。
3.製品を再獲得できるインターフェイスを提供します。
コードコピーは次のとおりです。
パブリッククラスのConcreteBuilderはビルダーを実装しています{
Parta、Partb、Partc;
public void buildparta(){
//これがパルタの構築方法の特定のコードです
};
public void buildpartb(){
//これがパートBの構築方法の特定のコードです
};
public void buildpartc(){
//これがパートBの構築方法の特定のコードです
};
公開製品getResult(){
//最終的なアセンブリ結果に戻ります
};
}
複雑なオブジェクト:製品:
コードコピーは次のとおりです。
パブリックインターフェイス製品{}
複雑なオブジェクトのコンポーネント:
コードコピーは次のとおりです。
パブリックインターフェイスパート{}
ビルダーモードを呼び出す方法を見てみましょう:
コードコピーは次のとおりです。
ConcreteBuilder Builder = new ConcreteBuilder();
ディレクターディレクター=新しいディレクター(ビルダー);
director.construct();
Product製品= builder.getResult();
ビルダーモードアプリケーション
実際のJavaの使用では、リソースプロバイダーが十分なリソースを提供できず、これらのリソースを多くのユーザーが繰り返し共有する必要がある場合、多くの場合、使用する必要があります。
「プール」は、実際には、プールに複雑なリソースの「壊れた手足」がある場合(データベース接続プールなど、接続が中断される場合があります)。メモリの使用は改善され、プールのパフォーマンスが向上します。ビルダーモードでディレクタークラスを変更して、どのコンポーネントが壊れているかを診断し、このコンポーネントを修復します。