206

声明を理解するのに問題がありlow in coupling and high in cohesionます。私はこれについてグーグルで調べて読んだことがありますが、それでも理解するのは難しいと感じています。

私が理解しているHigh cohesionことは、特定の機能を実行するために特化されたクラスを持つべきだということです。これが正しいことを願っていますか?クレジット カードのみの検証に特化したクレジット カード検証クラスと同様です。

低カップリングの意味をまだ理解していませんか?

4

16 に答える 16

300

私が信じているのはこれです:

凝集性とは、モジュール/クラスの要素がどの程度一緒に属しているかを指します。関連するコードは互いに近接している必要があるため、高い凝集性を追求し、関連するすべてのコードを可能な限り密接にバインドする必要があります。それはモジュール/クラスの要素と関係があります。

結合度とは、さまざまなモジュール/クラスが相互に依存する度合いを指します。すべてのモジュールを可能な限り独立させることをお勧めします。そのため、結合度は低くなります。それは、異なるモジュール/クラス間の要素と関係があります。

全体像を視覚化することは役に立ちます:

ここに画像の説明を入力してください

スクリーンショットはCourseraから取得したものです。

于 2012-12-22T07:32:01.190 に答える
38

ソフトウェア設計において、高い凝集度とは、クラスが 1 つのことと 1 つのことを非常にうまく行う必要があることを意味します。結束力の高さは、単一責任の原則と密接に関係しています。

カップリングが低いということは、クラスの依存関係が最小限であるべきであることを示唆しています。また、存在しなければならない依存関係は弱い依存関係である必要があります。具象クラスへの依存よりもインターフェイスへの依存を優先するか、継承よりも構成を優先します。

凝集度が高くカップリングが低いため、保守が容易な、より優れた設計のコードが得られます。

于 2016-02-10T08:09:54.583 に答える
27

短く明確な答え

  • 高い凝集性: 1 つのクラス/モジュール内の要素は、機能的に一緒に属し、1 つの特定のことを行う必要があります。
  • 疎結合: 異なるクラス/モジュール間の依存関係は最小限にする必要があります。
于 2018-04-24T11:56:21.337 に答える
5

簡単に言うと、結合度が低いということは、システムの適切な機能に影響を与えることなく、コンポーネントを交換できることを意味します。基本的に、システムを壊すことなく個別に更新できる機能するコンポーネントにシステムをモジュール化します

于 2012-12-22T07:03:24.627 に答える
1

Low Coupling and High Cohesion は、推奨される現象です。

カップリングとは、さまざまなモジュールがどの程度相互依存しているか、およびモジュールのいくつかの/かなりの機能を変更したときに他のモジュールがどのように影響を受けるかを意味します。依存関係を低く維持する必要があるため、低結合が強調され、他のモジュールへの変更が最小限/無視できるようになります。

于 2014-01-22T10:58:55.133 に答える
1

例が役立つ場合があります。データを生成し、それをデータ ストア (ディスク上のファイルまたはデータベース) に格納するシステムを想像してみてください。

データ ストア コードをデータ生成コードから分離することで、高い結合性を実現できます。(実際には、ディスク ストレージをデータベース ストレージから分離します)。

低カップリングは、データ プロダクションがデータ ストアに関する不必要な知識を持たないようにすることで実現できます (たとえば、ファイル名やデータベース接続についてデータ ストアに問い合わせません)。

于 2016-11-16T12:35:49.877 に答える
1

あなたは非常に多くの定義を持っていると思いますが、まだ疑問がある場合、またはプログラミングに不慣れでこれを深く掘り下げたい場合は、このビデオ https://youtu.be/HpJTGW9AwX0を見ることをお勧めします。 ポリモーフィズムに関する詳細情報を取得するための参照にすぎません...これで理解が深まることを願っています

于 2020-02-17T07:33:10.620 に答える
1

低カップリング:-- 非常にシンプルに保ちます。モジュールを変更すると、他のモジュールにどのような影響がありますか。

例:- サービス API が JAR として公開されている場合、メソッド シグネチャを変更すると API の呼び出しが中断されます (High/Tight カップリング)。

モジュールと他のモジュールが非同期メッセージを介して通信する場合。メッセージを受け取る限り、メソッド変更の署名はモジュールに対してローカルになります (低結合)。

もちろん、メッセージ形式に変更がある場合、呼び出し元のクライアントは何らかの変更を加える必要があります。

于 2020-02-19T06:35:40.773 に答える