Javaの密結合と緩結合の違いは何ですか?
密結合 クラスとオブジェクトが相互に依存していることを意味します。一般に、密結合は、緩い結合の間にコードの柔軟性と再利用性を低下させるため、通常は適切ではありません。 異なるクラスを直接使用するクラスの依存関係を減らすことを意味します。
タイトカップリング
- 密結合オブジェクト は他のオブジェクトについて知る必要があるオブジェクトであり、通常は互いのインターフェースに大きく依存しています。
- 密結合アプリケーションで1つのオブジェクトを変更する 多くの場合、他の多くのオブジェクトを変更する必要があります。
- 小さなアプリケーションでは、変更を簡単に識別でき、何かを見逃す可能性が低くなります。ただし、大規模なアプリケーションでは、これらの相互依存関係がすべてのプログラマーに常に知られているわけではなく、変更を見落とす可能性があります。
例
class A { public int a = 0; public int getA() { System.out.println("getA() method"); return a; } public void setA(int aa) { if(!(aa > 10)) a = aa; } } public class B { public static void main(String[] args) { A aObject = new A(); aObject.a = 100; // Not suppose to happen as defined by class A, this causes tight coupling. System.out.println("aObject.a value is: " + aObject.a); } }
上記の例では、この種の実装によって定義されたコードは密結合を使用しており、クラスBはクラスAの詳細を知っているため、非常に悪いです。クラスAが変数「a」をプライベートに変更すると、クラスBも壊れます。クラスAの実装では、変数'a'は10を超えてはならないことが示されていますが、変数に直接移動してその状態を決定した値に変更できるため、このようなルールを適用する方法はありません。
>出力
aObject.a value is: 100
- 緩い結合 は、システムのコンポーネント間の相互依存性を減らし、1つのコンポーネントの変更で他のコンポーネントの変更が必要になるリスクを減らすことを目的とした設計目標です。
- 緩い結合 は、システムの柔軟性を高め、システムをより保守しやすくし、フレームワーク全体をより安定させることを目的とした、はるかに一般的な概念です。
例
class A { private int a = 0; public int getA() { System.out.println("getA() method"); return a; } public void setA(int aa) { if(!(aa > 10)) a = aa; } } public class B { public static void main(String[] args) { A aObject = new A(); aObject.setA(100); // No way to set 'a' to such value as this method call will // fail due to its enforced rule. System.out.println("aObject value is: " + aObject.getA()); } }
上記の例では、この種の実装によって定義されたコードは緩い結合を使用しており、クラスBはクラスAを通過して、ルールが適用される状態を取得する必要があるため、推奨されます。クラスAが内部で変更された場合、通信手段としてクラスAのみを使用するため、クラスBは破損しません。
出力
getA() method aObject value is: 0
-
JavaのJFrameとJDialogの違いは何ですか?
JFrame フレームに追加されたコンポーネントはそのコンテンツと呼ばれ、 contentPaneによって管理されます。 。 JFrameにコンポーネントを追加するには 、 contentPaneを使用する必要があります 代わりに。 JFrame タイトルのウィンドウが含まれています 、境界線 、(オプション)メニュー バー およびユーザー -指定 コンポーネント 。 JFrame 移動できます 、サイズ変更 、アイコン化 JComponentのサブクラスではありません 。 デフォルトでは、JFrameは左上の角に表示されます 画面のr。指定した場所にフレームを表示するには
-
JavaのGridLayoutとGridBagLayoutの違いは何ですか?
GridLayout すべてのコンポーネントを長方形のグリッドに配置し、同じサイズの長方形に分割します 各コンポーネントは長方形の中に配置されますが、 GridBagLayout 柔軟です レイアウト マネージャー コンポーネントを垂直方向と水平方向に整列させます コンポーネントが同じサイズである必要はありません。各GridBagLayout オブジェクトは、動的な長方形のセルのグリッドを維持します 各コンポーネントがコンポーネントと呼ばれる1つ以上のセルを占有します 表示 エリア 。 GridLayout GridLayout コンポーネントを長方形のグリッドに配置します。セル