序文
ステップバイステップでは、複雑なオブジェクトを構築することができますBuilderのデザインモード。各特定のBuilderが構築ステップの一部を実装するようにビルド手順は、抽象化。この方法は、あなたは、さまざまなオブジェクトを構築し、同じ構成のステップを使用することができます。ディレクターの支援などは、パッケージのビルドに固定することができるディレクターにステップアップビルダー、ビルダーは、ディレクターが固有のビルド手順を呼び出すことができます。
それは何が変わっているのですか?構築するための手順の詳細
、それは同じである何?
分析
参照するにはBuilderのデザインモードでは、より頻繁にディレクターが自分自身であります!あなたは、目的のオブジェクトを構築するビルダー独自のビルド手順を呼び出す必要があります。この利点は、詳細を非表示にすることで、呼び出し側は、発信者が必要最小限に情報を与えられ、その後、特定の機能にそれらをパッケージ化、これらの詳細が同じで、詳細の多くを気にしません。
該当シーン
ときにクラスのコンストラクタのパラメータを必要なときのあまり、Builderのデザインパターンを考えます。
ソースコード解析
AlertDialog.Builder
なぜBuilderは利点の一つは、それの詳細を非表示にするのですか?setTitleこの機能を確認してください。
この関数を呼び出すのsettitle Builderを使用する場合、呼び出し側は通話のみのコンテキスト文字列を取得し、その後にAlertParamsに保存するtitleId、ビルダーの道を付与する必要があります。これは、こののほんの一例です。そのような新しいオブジェクトへの入力情報、Builderなどその他、およびAlertParamsを設定します。オブジェクトや他の操作を作成するには、検索文字列は、呼び出し側は裏面のみに与えられた情報を完了する必要があります。
AlertDialogを作成するには、最後の作成するための呼び出し()またはshow()、AlertDialogパラメータAlertParamsを設定し、AlertParams.applyはそのAlertControllerを設定呼び出しの方法。
達成するために自分の時間のビルダーは、これを返し、練習を参照することができ、一緒のsetXXXを接続することができます。
AlertDialog.java下面的Builder类
private final AlertController.AlertParams P;
public Builder setTitle(@StringRes int titleId) {
P.mTitle = P.mContext.getText(titleId);
return this;
}
public AlertDialog create() {
// Context has already been wrapped with the appropriate theme.
final AlertDialog dialog = new AlertDialog(P.mContext, 0, false);
P.apply(dialog.mAlert);
...
return dialog;
}
AlertController.java下面的AlertParams类
public void apply(AlertController dialog) {
...
if (mMessage != null) {
dialog.setMessage(mMessage);
}
if (mPositiveButtonText != null) {
dialog.setButton(DialogInterface.BUTTON_POSITIVE, mPositiveButtonText,
mPositiveButtonListener, null);
}
...
}
ディレクター
ここでは、力印加ディレクターの例を考えます。アクティビティでは、プロセスは、他の部分と同じではない付加SetMessageにこれらの方法のいくつかのAlertDialogを作成したと同じです。ディレクターは、Builderの作業を指示するように、それはメッセージを除き、これらのAlertDialogの一貫したスタイルを決定された場合は、ビルダーを渡し、ディレクタークラスを作成することができ、同じではありませんが、入ってくる文字列は、表示されます。
同じスタイルを作成するには、繰り返しの多くは本当にAlertDialogが前提の下で使用されていることを確認しています。そのようなあなたがALertDialogのスタイルを変更したい場合など、メリットの事、については、それぞれが修正するために行う必要があります。取締役は、取締役がどれだけ変更する方法を教えてくれた場合、それは光栄ではないでしょう。