導入
ソフトウェアシステムでは、通常、特定のアルゴリズムを使用して各部分のサブオブジェクトで構成される「複雑なオブジェクト」の作成に直面することがあります。要件の変化により、この複雑なオブジェクトのさまざまな部分は劇的な変化に直面することがよくありますが、それらを結合するアルゴリズムは実際には比較的安定しています。この変更に対処する方法は?システム内の「安定した構造アルゴリズム」をニーズで変えないようにするために、「複雑なオブジェクトの各部分」の変化を分離するための「カプセル化メカニズム」を提供する方法は?これは、ビルダーモデルが言及されるものです。
ビルダーパターンは、複雑なオブジェクトの構造を表現から分離できるため、同じ構造プロセスが異なる表現を作成できます。つまり、ビルダーモードを使用する場合、ユーザーはそれらを取得するためにビルドするタイプを指定する必要があり、特定の構造プロセスと詳細を既知する必要はありません。
文章
このパターンは比較的簡単です。最初にコードを入力してから説明してください
コードコピーは次のとおりです。
関数getBeerbyId(id、callback){
// IDを使用してデータを要求してからデータを返します。
asyncrequest( 'get'、 'beer.uri?id =' + id、function(resp){
//コールバックの呼び出し応答
callback(resp.responsetext);
});
}
var el = document.queryselector( '#test');
El.AddeventListener( 'Click'、GetBeerbyIdbridge、false);
関数getBeerByIdBridge(e){
getbeerbyid(this.id、function(ビール){
console.log( 'リクエストビール:' +ビール);
});
}
ビルダーの定義によれば、テーブルフェーズはコールバックです。つまり、データを取得した後にデータを表示および処理する方法は、コールバック関数に依存します。それに対応して、コールバック関数は、データの処理時にデータの取得方法に注意を払う必要はありません。同じ例は、jQueryのAjaxメソッドでも見ることができます。多くのコールバック関数(成功、エラーコールバックなど)があり、主な目的は責任を分離することです。
また、jQueryの別の例を見てみましょう。
コードコピーは次のとおりです。
$( '<div class = "foo"> bar </div>');
特定のHTMLオブジェクトがどのように生成されるかに関係なく、生成するHTML文字を渡すだけです。
要約します
ビルダーモデルは、主に「ステップで複雑なオブジェクトを構築する」ために使用されます。「ステップ」は安定したアルゴリズムであり、複雑なオブジェクトのさまざまな部分はしばしば変更されます。利点は、ビルダーモデルの「処理プロセス」が公開され、ビルダーモデルがより柔軟になり、ビルダーモデルがアセンブリプロセスを分離し、特定のコンポーネントを作成するため、各コンポーネントのアセンブルを気にする必要がないことです。