0

再利用可能なライブラリで型の動作を変更する (簡単にするために) 2 つの設定があるとします。

構成クラスを定義できます。

class Config {
  public bool Behaviour1 { get; set; }
  public bool Behaviour2 { get; set; }
}

そのようなことを行う場合よりも、インスタンスを構成ルート(IoC で処理されているかどうかに関係なく) から階層全体に伝播する必要があります。

コードは多数の条件ステートメントによって侵略され、可読性、保守性、および拡張性が低下します。

2 つの行動タイプを定義する方がよいのではないでしょうか?

public class Behaviour1 : IBehaviour1 {}

public class Behaviour2 : IBehaviour2 {}

他のタイプが から持っているグローバルな依存関係を削除しConfigます。動作を必要とする各クラスは依存し、そのファクトリはタイプIBehaviourXに基づいて適切な具象を注入します。Config

このように、ごく少数の最上位タイプのみが Config に依存し、割り当て動作(しゃれを許してください) の動作は階層全体に伝播しません。

そのような場合の解決策に興味があります。

4

2 に答える 2

1

条件などの違いを処理するのではなく、クラス/インターフェイスとして動作を実装することで正しい方向に進んでいると思います。

あなたの現在のアイデアがその方向に向かっているように見えるので、戦略パターンを見たいと思うかもしれません。そして、IoCを使用すると、あなたのアイデアはそのままうまく機能するはずであり、おそらく私はそれで解決するでしょう.

于 2013-03-09T05:36:25.960 に答える
1

作成方法の設計パターンについて考えることができます。

構成パラメーターに基づいてクラスの動作を変更する必要があると、問題が発生します。これは、クラスが明らかに SRP ルールに違反し、サブクラスを作成し、仮想 /override メソッドを使用して構成に関連する目的の動作を取得し、Creation Method patten を使用するためです。正しいオブジェクトを取得するには

于 2013-03-08T07:07:31.410 に答える