1

私はたくさんの関連するクラスを持っています、それらはすべて異なる方法で同じ機能を実行するために特定のインターフェースを実装しています。

1つのクラスのコードの約70%は一意であり、約30%は2つ以上のクラス間で再利用できます。セットにはそのようなクラスが約30あります。

何がより論理的かを判断することはできません。

再利用可能なすべての関数を含む大きな基本クラスを作成するか、共通の関数を含むutilsクラスを作成します。

2つのアプローチは私には同じように見えますが、どちらか一方を優先する理由はありますか?

4

4 に答える 4

3

答えは、メソッドの性質によって異なります。 クラス/メソッドは、ステートレスオブジェクト値(独立)Utilに対して何らかの操作を実行する場合に便利です。繰り返しになりますが、特定の(制限された)引数をメソッドに渡し、メソッドから期待される出力を取得する場合は、そのメソッドをクラスメソッドにすることを検討してください。これが理由です。通常、utilメソッドはクラスインスタンスとして作成され、クラスインスタンスに関連付けられていません。getMaxOfArray(int[] array)Utilstatic

これが動作である場合は、Utilクラスを使用してください。ただし、メソッドがオブジェクトインスタンスに大きく依存している場合は、基本クラスで定義されている一般的なメソッドでクラス階層を使用することをお勧めします。

于 2012-12-21T06:04:14.080 に答える
1

共通の機能を持つクラスを識別し、それらをグループ化して、インターフェースを抽出する必要があります。

@を見る最良の例は、Javaコレクションの管理方法です。

1.インターフェイス階層2.共通の具象クラス間で共有される抽象クラス3.ユーティリティクラス

于 2012-12-21T07:08:23.783 に答える
1

親クラスとその子の関係は非常に特殊である必要があり、子は親のより特殊なケースです。あなたの共通の機能はこの種の考え方に適合しますか?「ビッグベースクラス」について話すとき、私はそうではないと思いますが、あなたが提供した情報を考えると、それはただの予感です。

ヘルパー機能がこの種の関係に適合しない場合は、ユーティリティクラスをお勧めします。

混ぜ合わせることも適切かもしれませんが、それはすべて各方法が何をしているかに依存することを覚えておいてください。

于 2012-12-21T06:25:41.193 に答える
0

ユーティリティとして独立して使用できる機能がある場合は、論理的に意味がない限り、階層や構成ではなく、テストが簡単で、必要な場所で副作用なしに使用できるutilクラスをお勧めします。

于 2012-12-21T06:03:48.430 に答える