2

シナリオ:

クラス B のメソッドで処理する必要があるイベントクラス A で発生します。(現在はデリゲートを介して)イベントからメソッド に渡されるデータは、現在クラス C でラップされています。 これには明らかにクラス B が必要です。クラスCに依存して います。この依存関係を取り除くために実行できるテクニック/リファクタリングはありますか? たとえば、データを展開して単純なプリミティブ データ型に戻し、それらを直接渡します。





4

5 に答える 5

5

プリミティブへの展開は機能しますが、この依存関係を本当に削除したいことを確認してください。クラス A と B の両方が C に依存することは、C がそれらの間のブリッジである場合、または C がそれらの両方をフィードする場合などに完全に有効です。

プリミティブへのアンロールは、コンパイルの依存関係を削除しますが、データの依存関係は削除しません。実際には、論理的に必要なエンティティ (クラス C) を削除することで設計を「非正規化」している可能性があります。

于 2008-11-03T14:37:20.140 に答える
2

私はスティーブン・ロウに同意します。依存関係はおそらく有効です。私が提供できる唯一の代替手段は、実際のクラスではなくインターフェースに依存することですが、それはほとんど同じことになります。

于 2008-11-03T14:46:49.823 に答える
0

少なくともこれらの依存関係を一元化し、構成可能にするために、Structuremapのような依存性注入フレームワークを見たことがありますか?イベント/デリゲートタイプでは試していませんが、レイヤーの周りに多くのカスタムタイプ/インターフェイスを渡す場合は優れたツールです。

于 2008-11-03T15:14:29.707 に答える
0

他のほとんどの人が言ったように、C への依存はおそらく有効です。

ただし、C に依存して問題が発生する場合は、C が複雑すぎるか、C 自体の依存関係が多すぎることが原因である可能性があります。

クラス C がイベントで渡される場合、それはおそらく独自の依存関係のない POCO クラスである必要があるため、そのリファクタリングを検討することをお勧めします。

C が独自の複雑なメソッドを持っている場合、それらが実際にクラス A に属しているというのは良い賭けです。

于 2008-11-03T15:06:25.260 に答える
-2

XML にシリアル化し、XPATH を介して直接 XML を読み取ることができます (逆シリアル化せずに)。

于 2008-11-03T14:37:15.040 に答える