Java での結合

WBOY
WBOYオリジナル
2024-08-30 15:14:56979ブラウズ

JAVA における

カップリングは a の指標です。 オブジェクト指向環境における、あるクラスと他のクラスとの依存関係、b。エンドユーザーの要件を満たすために、開発者がさまざまなクラスにわたってコードを変更する際の柔軟性のレベル、c. クラスの機能が他のクラスによって使用される方法 (直接または外部インターフェイスの助けを借りて)、 d. 本番稼働後のコードの保守に必要な労力、e. コーディングとテストの柔軟性を高めるために、制御反転や依存性注入などの革新的なソフトウェア技術を使用する方法コードの数。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

Java の結合の種類

Java には 2 つの主要な結合があり、それらを詳しく分析してみましょう。

1.密結合

オブジェクト指向アプリケーション設計では、すでに投資された労力を再利用し、車輪の再発明を避けるために、あるクラスで開発されたロジックを別のクラスで利用する必要が常にあります。

クラス間の直接コラボレーションは密結合につながり、その特徴は次のとおりです

  • 呼び出されたクラスで使用できるビジネス ロジックは、呼び出したクラス内のオブジェクトとして作成されます。
  • このように作成されたオブジェクトは呼び出しクラス内で実行され、必要な機能が実現されます。したがって、呼び出し側プログラムは、呼び出されたクラスで利用可能なビジネス ロジックのすべての機能を認識しています。
  • 呼び出されるクラスでコーディングされたビジネス ロジックの変更は、呼び出されるクラスの結果に影響を与えます
  • 呼び出されるクラスでの変更が避けられない場合は、呼び出し側のクラスでも適切な変更を実行する必要があります。
  • したがって、クラスは互いに高度に相互依存しています

密結合の例

この例の 2 つの連携クラス、「Ordervalue」と「order」は相互依存しています。呼び出し側クラス「Ordervalue」は、呼び出し先クラス「order」にコード化されたビジネス ロジックを認識しており、呼び出し側クラスのコードは構造化されており、呼び出し側クラスの変更はプログラムの結果を狂わせます。

したがって、クラス「Ordervalue」と「Order」は密接に結合していると結論付けることができます。

コード:

// Tight Coupling - Sample program
public class ordervalue // Calling class
{
public static void main(String args[]) // method in the class
{
order b = new order(600,5); // creating object for the called class
System.out.println("value of the order is");
// order and execute it
System.out.println(b.value); // Prints the order value computed by
} // the called class
}
class order // Called class
{
public int value; // method in the class
order(int orderquantity, int rate) // business logic
{
this.value = orderquantity * rate; // computing the value
}
}

出力:

Java での結合

2.疎結合

この概念では、OOPS のビジネス ロジックと共通機能を共有するために連携する必要があるクラスが、外部ソースを通じて結合されます。したがって、それらは緩やかにまたは間接的に相互に接続されています。

疎結合の主な属性は次のとおりです

  • クラス、コードコンポーネント、モジュール間の依存関係は低いです。
  • 依存関係が避けられない場合は、インターフェースなどの外部コンポーネントを介して接続されます。
  • 疎結合のメリットを享受するために、インターフェイスを使用した接続は最小限に抑えられます。
  • クラス内の他のクラスの周囲にオブジェクトを定義する必要はなく、オブジェクトは独立します。
  • 各クラスは、この結合内の他のクラスについてほとんど情報を知りません。せいぜい、各クラスは他のモジュールが公開されているインターフェイスを認識します。
  • クラス内のコードを変更しても、他のクラスには影響せず、更新する必要もありません。
  • 開発者はコードを簡単に変更し、新しいビジネスの変更に対応できる完璧な柔軟性を提供します。
  • プログラムを保守する時間と労力が大幅に削減されます
  • 制御の反転や依存性注入などの Spring フレームワークの概念は、密結合を克服するために使用されています。

制御の反転 (IOC)

プログラムモジュールやオブジェクトの制御をコンテナフレームワークに移す概念です。この概念は OOPS で非常に頻繁に使用されます。プログラム コードがライブラリを呼び出す代わりに、コンテナ フレームワークが制御を引き継ぎ、コードを呼び出します。依存関係を作成するオブジェクトとは異なり、依存関係がオブジェクトに注入されます。

この概念は、プログラミングにおける疎結合とモジュール性を促進します。

依存性注入 (DI)

DI は IOC の概念が使用される手段であり、オブジェクトの依存関係を設定する際に制御の転送が行われます。

疎結合の例

In the example, three Classes, “month1”, “month2”, “month3” are independent modules, and they collaborate little with each other through an interface “iface”. As a result, these classes have very little knowledge of the other classes on what they are doing. They only know that all the classes are interacting with an interface.

There is no object created using the other classes in any of these classes, and they are the typical examples of loose coupling.

Code:

// Loose Coupling in JAVA - Sample Program
interface Iface //Interface is defined
{
public void monthname(); //module within the interface
}
class month1 implements Iface { // Class interacts through
public void monthname() // interface
{
System.out.println("January");
}
}
class month2 implements Iface { // Class interacts through
public void monthname() // interface
{
System.out.println("Feburary");
}
}
class month3 implements Iface { // Class interacts through
public void monthname() // interface
{
System.out.println("March");
}
}
public class Subject { // Execution starts here
public static void main(String[] args)
{
Iface t = new month1(); // First class called thru
t.monthname(); // interface
Iface tx = new month2(); // Second class called thru
tx.monthname(); // interface
Iface tx2 = new month3(); // Third class called thru
tx2.monthname(); } // interface
}

Output:

Java での結合

Conclusion

As far as possible, applications will have to be designed to hold only loose couplings for better maintainability and serviceability and keep interdependence between program components very minimal. However, if interdependence is a must, the components will have to be connected only through the interface.

以上がJava での結合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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