ホームページ  >  記事  >  Java  >  Javaコードの再利用性を向上させる

Javaコードの再利用性を向上させる

angryTom
angryTomオリジナル
2019-07-16 17:35:182254ブラウズ

Java コードの再利用性を高める方法と対策とは? Java コードの再利用性を高める 3 つの方法について説明します。一緒に学びましょう~

1.クラスのインスタンス メソッドのオーバーライド

クラス継承によるコード再利用の実現は、正確なコード再利用手法ではないため、最も理想的なコード再利用メカニズムではありません。継承によって常にメソッドとデータ メンバーが冗長になるため、クラス内でメソッドを再利用するコードが常に複雑になります。

さらに、親クラスに対する派生クラスの依存関係もコードをさらに複雑にします: 親クラスへの変更はサブクラスに影響を与える可能性があります。親クラスまたはクラスのいずれかを変更するときに覚えておくのは困難です。どのメソッドがサブクラスによってオーバーライドされ、どのメソッドがサブクラスによってオーバーライドされないか? 最後に、サブクラスでオーバーライドされたメソッドが親クラスの対応するメソッドを呼び出す必要があるかどうかが明らかでない場合があります。

単一の概念のタスクをそれ自体で実行する限り、どのメソッドも再利用可能なコードとして推奨されます。このコードを再利用するには、プロシージャ指向プログラミング モデルに戻り、クラス インスタンス メソッドをグローバル プロシージャに移動する必要があります。

このようなプロシージャの再利用性を向上させるには、プロシージャ コードを静的ユーティリティ メソッドのように記述する必要があります。プロシージャ コードは独自の入力パラメータのみを使用でき、他のグローバル プロシージャのみを呼び出すことができ、非ローカル メソッドは使用できません。変数。外部依存関係に対するこの制限により、プロシージャの適用が簡素化され、どこでも簡単に使用できるようになります。

もちろん、この種の組織ではコードの構造が常に明確になるため、再利用性を考慮していないコードでもその恩恵を受けることができます。

Java では、メソッドはクラスから独立して存在できません。この目的のために、関連するプロセスを独立したクラスに編成し、これらのプロセスをパブリック静的メソッドとして定義できます。クラスは、オブジェクト データ メンバーを編成およびカプセル化するプロセスで不可欠な役割を果たします。クラスは複数のインターフェイスを通じて実装されます。ポリモーフィズム自体の機能も優れたコード再利用サポートを実現します。

2. 最も単純なパラメータ インターフェイス タイプを選択する

パラメータ オブジェクトを記述するために必要なインターフェイスが単純であればあるほど、他のクラスが実装する可能性は低くなります。値が大きいほど、オブジェクトをパラメータとして使用できるクラスの数が増えます。これは、次の例から簡単にわかります。

static public boolean areOverlapping(Window window1, Window window2) {...}

このメソッドは、2 つのウィンドウが重なっているかどうかを確認するために使用されます。このメソッドで 2 つのウィンドウの直交座標のみをパラメーターから取得する必要がある場合は、それに応じて 2 つのパラメーターを単純化することをお勧めします。パラメーター要件を記述するインターフェイスにメソッドが多すぎる場合があります。

この時点で、同じ問題に直面している他のコードで再利用できるように、グローバル名前空間に新しいパブリック インターフェイスを定義する必要があります。 C 言語で関数ポインターなどのパラメーターを使用する必要がある場合、パラメーター要件を記述した独自のインターフェイスを作成するのが最良の選択です。たとえば、次のような処理を想定します。

static public void sort(List list, SortComparison comp) {...}

このメソッドは、パラメータで指定された比較オブジェクト comp を使用して比較します。 to 指定されたリスト list 内のオブジェクトを並べ替えます。 comp オブジェクトでの並べ替えの唯一の要件は、比較のためのメソッドを呼び出すことであるため、SortComparison インターフェイスを他の場所で再利用することはできません。

3. パラメーター タイプをインターフェイスに変更する

オブジェクト指向プログラミングにおけるコード再利用の真のポイントは、複数のインターフェイス パラメーター タイプを利用することです。クラスの継承ではなくステートフルネスにより、クラスの代わりにインターフェイスをプログラミングすることでコードの再利用を実現します。メソッドのすべてのパラメータが既知のインターフェイスへの参照である場合、このメソッドは、メソッドのコードを作成した時点ではクラスが存在すらしていないオブジェクトを操作できます。技術的には、再利用可能なのはメソッドであり、メソッドに渡されるオブジェクトではありません。

たとえば、次のようなメソッドがあるとします。

static public boolean areAnyOverlapping(Collection rects) {...}

このメソッドは、チェックに使用されます。指定されたコレクションの長方形オブジェクトが重なっているかどうか。このメソッド内で、ループを使用してコレクション内の各オブジェクトに順番にアクセスする場合、オブジェクトを Rectangular などのインターフェイス型にキャストできない場合、オブジェクトの長方形領域にアクセスするにはどうすればよいでしょうか?唯一のオプションは、オブジェクトをその固有のクラス形式にキャストすることです。これは、メソッドが操作対象のオブジェクト タイプを事前に知っている必要があることを意味し、メソッドの再利用をそれらのオブジェクト タイプに制限することになります。

さらに関連する知識については、次をクリックしてください: Java チュートリアル

以上がJavaコードの再利用性を向上させるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。