をあなたの方法はthis
を返しておいてください。
public class Dialog {
public Dialog() {
}
public void setTitle(String title) {
//Logic to set title in dialog
}
public void setMessage(String message) {
//Logic to set message
}
public void setPositiveButton() {
//Logic to send button
}
}
は、私は次のように、私が使用できるメソッドチェーンを作成したいです好きな:
public Dialog setMessage(String message)
{
//logic to set message
return this;
}
この方法では、いずれかのメソッドを呼び出すたびに同じオブジェクトが返され、別のメソッドを呼び出すことができます。
このテクニックは、オブジェクトの一連のメソッドを呼び出すときに便利です。これを実現するために必要なコード量を減らし、一連のメソッドの後に単一の戻り値を持たせることができます。
ダイアログがあろう表示するために必要なコードの量を削減する例:
// Your Dialog has a method show()
// You could show a dialog like this:
new Dialog().setMessage("some message").setTitle("some title")).show();
単一の戻り値を使用する例は次のようになります
// In another class, you have a method showDialog(Dialog)
// Thus you can do:
showDialog(new Dialog().setMessage("some message").setTitle("some title"));
使用例デニスがあなたの質問にコメントしたビルダーパターン:
new DialogBuilder().setMessage("some message").setTitle("some title").build().show();
ビルダーパットternは、オブジェクトが構築される前にクラスの新しいインスタンスのすべてのパラメータを設定することができます(構築後に値を設定するのは、構築時に値を設定するよりもコストがかかります)。上記の例では
:setMessage(String)
、setTitle(String)
はDialogBuilder
クラスに属し、それらが呼びかけているDialogBuilder
の同じインスタンスを返します。 build()
メソッドはDialogBuilder
クラスに属しますが、Dialog
メソッドを返します。show()
メソッドはDialog
クラスに属します。
エクストラ
これは、あなたの質問に関連していない可能性がありますが、それはあなたとこの問題に遭遇して他人を助けるかもしれません。
これは、ほとんどのユースケースに適しています:継承を伴わないすべてのユースケースと派生クラスは、あなたがしているあなたが一緒にチェーンにする新しいメソッドを追加していないとき、継承を含むいくつかの特定の例導かれたオブジェクトとしてのメソッドの連鎖の結果を(キャスティングなしで)使用することには興味がありません。
基本クラスにメソッドを持たない派生クラスのオブジェクトのメソッド連鎖を使用する場合や、メソッドの連鎖で派生クラスの参照としてオブジェクトを返す場合は、a this questionの回答を見てください。ダイアログを表示するために必要なコードの量を削減する
のようにそれを使うのか? –
これは、通常、「流暢」または「流暢」プログラミングと呼ばれます。 – Pureferret
流暢なAPIのためにセッターを使うのではなく、ダイアログのためのBuilderを作成します。そうすれば、フレームワークがvoidを返すようにセッターを制限するので、多くのbeanのようなアクセスはもはや機能しません。そのボイラープレートをすべて書きたいと思わない場合は、プロジェクトロンボクを見てください。 –