1

私はJavaパターンが初めてで、それがREAL WORLDにどのように適合するかを理解しようとしています. パターンに関するほとんどのサイトや本は、非プログラマーによって書かれているようです。

パターンが結合にどのように役立つかを定義しようとしていますが、これが今のところ私の定義です。私が知りたいのは、どのパターンが疎結合に本当に役立つか、そしてそれらは努力する価値があるかということです。また、これまでのところ私の定義/理解は正しいですか:

「カップリングとは、2 つ以上の異なるオブジェクトが相互にアクセスおよび/または相互作用する度合いです。」

2 つのオブジェクト間の密結合:

  • 参照/インスタンス化 : 多くの場所で、一方または両方のオブジェクトで、他のオブジェクトへの多くの敬意 (多対多の参照)

  • 複雑さ : 通常、多くのパラメーターが関数へのアクセス、またはさまざまな関数へのアクセスのシーケンスを必要としました。関連オブジェクトの共通インターフェースはありません。

  • 責任:アクセスされているオブジェクト、または別のオブジェクトで行うべき作業を行う。ネストされた関数に直接アクセスする。

  • パフォーマンス : 密結合が必要になる場合がある最大の理由ですが、最小化する必要があります。

2 つのオブジェクト間の疎結合:

  • 参照/インスタンス化: 少ないが、1 つのオブジェクトに少なくとも 1 つの参照があるが、両方にはない (1 ~ 少数の参照)
    役立つパターン: Factory、Singleton、Builder、Composite


  • 責任 : オブジェクトが実行する責任がある作業のみを行い、1 レベル下の機能にのみアクセスしようとします。
    役立つパターン: デコレーター、責任の連鎖、MVC

  • パフォーマンス : パフォーマンスが必要な場所を特定し、それらのクラスを一緒に保ちます。定義ごとに、密結合されたネストされたクラスとしても構いません。

4

1 に答える 1

0

疎結合に最適と考えられるパターンは、依存性注入を使用して作成された IoC: Inversion of Control です。

基本的に、クラス Alfa がクラス Beta の別のオブジェクトを必要とする場合、手動で Beta をインスタンス化し、それを Alfa に渡す (インジェクション) 必要があります。

Beta myDependencyObject ....;
Alfa myObjectWithDependency(myDependencyObject);

このようにして、Alfa が Beta に依存していることを明らかにします。

于 2013-10-17T11:22:22.377 に答える