2

この形式の一連の静的ユーティリティメソッドがあります。

StringBuffer Util.doA(String arg0, String arg1, SomeEnum e);  
StringBuffer Util.doB(String arg0, String arg1);  
StringBuffer Util.doC(String arg0, String arg1, String arg2,String arg3);  
StringBuffer Util.doD(String arg0, String arg1, String arg2,String arg3, AnotherEnum e);  
etc

ビルダーやその他のパタ​​ーンなどを介して動的に作成されたJDialogを表示したいのですが、ボタンを押すと、ダイアログのタイプに応じて適切なユーティリティメソッドが呼び出されます。
たとえば、JDialogがボタンのアクションリスナーである場合は、入力フィールドから引数として渡すデータをtype A呼び出す必要があります。JDialogがである場合は、ボタンのアクションリスナーなどを呼び出します。 タイプA、Bなどは私のカスタムタイプです。使用は必須ではありません。各JDialogを区別するためにそれらを持っています。 タイプAのJDialogは、一部の入力フィールドでタイプBのJDialogとは異なります。しかし、全体的な外観は似ています。 合計で約20のタイプと20の対応するutilメソッドがあります。Util.doAtype BUtil.doB



私が抱えているこの問題の標準的なパターンはありますか?
各カスタムJDialogがそれ自体を適切に作成し、actionlistenerのメソッドが適切なユーティリティメソッドを呼び出すようにJDialogを拡張し始めましたが、最終的に20の新しいクラスになります。
それで、これに対するより良いアプローチがあるかどうかを考えました。何か案は?

ありがとうございました

4

1 に答える 1

2

対応するutilメソッドを20種類の中に入れます。タイプ間に重複がある場合は、それをスーパークラスに移動できる可能性があります。

あなたの質問に関しては、これがあなたの場合の最適なアプローチだと思います。ダイアログとutilコードがすべて1つのクラスにあり、それ以上のものがない場合、そのクラスの目的は明らかです。また、新しいタイプを削除、変更、追加する必要がある場合は、1つのクラスを削除するか、1つのクラスを変更するか、1つの新しいクラスを作成するだけで済みます。関連するすべてのコードをまとめておくと、の「ショットガン手術」を防ぐことができます。

于 2010-12-07T12:09:51.647 に答える