そこで、Factory Design パターンと Dependency Injection を併用することにしました。
class ClassA
{
Object *a, *b, *c;
public:
ClassA(Object *a, Object *b, Object *c) :
a(a), b(b), c(c) {}
};
class ClassB : public ClassA
{
Object *d, *e, *f;
public:
ClassB(Object *a, Object *b, Object *c, Object *d, Object *e, Object *f) :
ClassA(a, b, c), d(d), e(e), f(f) {}
};
ここでの問題は、classB のコンストラクターに対する引数が多すぎることです。これは単一の継承レイヤーの例ですが、継承レイヤーが深くなり始め、各レイヤークラスを構築するためにさらに多くのオブジェクトが必要になると、最上位レイヤーのコンストラクターは作成するためにあまりにも多くの引数を必要としなくなります!
コンストラクターの代わりにセッターを使用できることはわかっていますが、他に方法はありますか?