0

私は基本クラスを持っています:

class B { }

たくさんの依存関係があります:

public B(IFoo foo, IBar bar, IFooBar fooBar, IAlice alice, IBob bob) { }

次のような派生クラスがたくさんあります。

public class D : B { }

ただし、のコンストラクターを満たす必要があるため、B依存関係があります。

public D(IFoo foo, IBar bar, IFooBar fooBar, IAlice alice, IBob bob)
    : base(foo, bar, fooBar, alice, bob) { }

私が言ったように、私はこれらをたくさん持っています。そして、これは悪いようです。それは繰り返しです。単一のコードBが、小さな退屈な変更を必要とする多くのクラスを介して波紋に変化します。

ヘルプ?

4

1 に答える 1

2

私はあなたがBにどのような変更を加えているか、そしてそれらがBのほとんどのサブクラスがサブクラスであるべきである追加のサブクラスを必要としていることを示しているかどうかを調べます。

コンストラクター引数がたくさんあることは実際には問題ではなく、単に不便です。すべての基本クラスの引数を格納するクラスを作成することをお勧めします。Dのインスタンスが必要な場合は、そのインスタンスにデータを入力してからDに渡します。これにより、Dに渡され、すべてのデータが抽出されます。

public Bargs(IFoo foo, IBar bar, IFooBar fooBar, IAlice alice, IBob bob) { }
public B(Bargs myArgs){}
public D(Bargs myArgs) : B(myArgs){}
于 2013-02-12T03:23:46.907 に答える