ビルダーモードの説明
1.複雑なオブジェクトの構築を表現から分離して、同じ作成プロセスが異なる表現を持つことができるようにします。これはビルダーパターンと呼ばれます。
2。説明オブジェクト指向言語での説明、主な役割:
1>。ビルダーインターフェイスクラスは、複雑な構造オブジェクトを表す統一された運用的な行動方法であるビルダー[ワーカー]を定義します。
2>。 ConcreteBuilderは、さまざまな形式のビルダーのインスタンスオブジェクトを作成して、ビルダーのさまざまな表現を表します。
3>。ディレクターこの司令官は、ビルダーインスタンスのパフォーマンスから分離するために使用されるビルダーインスタンスの実行プロセスと形式をガイドするために使用され、特定のルール順序で製品結果を作成および生成するためにビルダーインスタンスをガイドするために使用されます。
4>。 ResultObjectによって作成された結果は、結果オブジェクトを生成します。これは、ディレクターガイダンスに基づいて特定の作成者によって作成された結果です。
3.ビルダーモデルは、実際には司令官、ビルダー、および司令官を使用して特定のビルダーを呼び出して作業し、特定のビルダーから結果を引き出すことができる顧客です。
4。ビルダーモード、シミュレートされたシナリオ:[ビルダーモードの説明を示す良い例を参照]
家族は家を建てたいと思っていると言われていますが、家の所有者や家族の他の人々は家を建てる方法を知らないので、少数の労働者を雇わなければなりません。家の建物のチームには、所有者のアイデアに従って家を建てるための職長がいなければなりません。フォアマンは設計し、労働者が所有者の要件に従って行うことをすることを要求します。
フォアマンは、最初のステップは家のスケルトン全体を建設すること、2番目のステップは寝室を建設すること、3番目のステップはキッチンを飾ること、4番目のステップはリビングルームを建設すること、5番目のステップは...
フォアマンは何もしませんが、特定のビルダーはフォアマンの要件に従ってそれを行う必要があります。最初と2番目のステップは、家全体が完成するまで構築されます。
作成者は、この家を作るためのすべてのスキルを持っている必要があります。つまり、スケルトンを構築し、寝室を飾ります。つまり、ビルダーが行うこと、または能力があることは、司令官が必要とすること、または能力を持っていることよりも等しくなければなりません。
つまり、司令官はオーガナイザーであり、ビルダーはスキルを提供します。
5. JavaScriptのような弱い言語では、インターフェイスのようなものがない場合は、インターフェイス定義レイヤーを無視し、特定のビルダーを直接作成してから、ガイダンスクラスを作成してビルダーをバックアンドフォートします。
インスタンスソースコード
1。労働者ビルダーX:
コードコピーは次のとおりです。
function workerbuilder(){
this.workone = function(){
//スケルトンを構築します
}
this.worktwo = function(){
//寝室を構築します
}
this.workthree = function(){
//キッチンを構築します
}
this.workfour = function(){
//リビングルームを建設します
}
// ...
this.getResult = function(){
//家を建てます
var house = new house();
//house.houseframe ...
帰りの家;
}
}
WorkBuilderは特定のビルダーであり、WorkOne、2つは何をすべきか、スケルトンを構築するなどです。
もちろん、ワークビルダーは、労働者が仕事ごとに異なる方法を実行することを示すために、さらにいくつか構築できます。しかし、作業コンテンツは同じです。
2。司令官カテゴリ
コードコピーは次のとおりです。
function director(){
this.construct = function(builder){
builder.workone();
builder.worktwo();
builder.workthree();
builder.workfour();
// ...
//上記のコンテンツを順番に設定でき、作業項目を設定することもできます。
}
}
司令官カテゴリに基づくガイダンス方法には、ビルダーへのコールバック参照が含まれています。司令官は、ビルダーの労働者が何をする必要があるかを整理し、手配します。
3。製品ハウス
コードコピーは次のとおりです。
function house(){
this.houseframe = '';
this.room = '';
this.kitchen = '';
this.livesroom = '';
// ...
}
4。使い方
コードコピーは次のとおりです。
var builder = new WorkBuilder();
var director = new Director();
Director.Construct(ビルダー);
var house = builder.getResult();
4番目のステップは、使用全体が顧客と同等であるということです。家の所有者です。所有者はディレクターフォアマンに家を建てるように頼みますが、フォアマンは何もしませんので、彼はビルダーの労働者に子供を建てるよう指示し、最終的に所有者は労働者から建てられた家を手に入れます。
その他の指示
ビルダーモデルは、コンテンツ[要約]が複雑で、実際のシーンが異なる場合、作業コンテンツや順序が矛盾している状況など、より適しています。たとえば、各人の日常生活プロセス、および上記の例に似たシーン。インストラクターレイヤーを通じて、多くの同様の職場が矛盾している環境を減らすことができます。実際のオブジェクトの構造抽象化を大幅に削減できます。