我工作在一个庞大的传统项目上。有一些基本上只创建一次的类(它们应该是单例,但是很好),然后传递给程序中的几乎所有其他类。用于简化班级构造函数的前置声明容器
因此,有很多像这样的代码,其中的类具有指针的几乎不尽的名单在其构造
Foo(A* a, B * b, C * c, ...)
: Foo2(a,b,c),
_a(a),
_b(b),
_c(c),
...,
{}
我想我可以清理,如果我用了一个类来包含所有的指针并使用前向声明来避免创建更多的包含依赖关系。每个班级都可以使用getters然后提取他们需要的任何内容并包含适当的标题。
//No includes required
class A;
class B;
class C;
class InterfaceMngr
{
public:
InterfaceMngr(A * a, B * b, C* c)
:_a(a),
_b(b),
_c(c)
{
}
A * GetA() const { return _a; }
B * GetB() const { return _b; }
C * GetC() const { return _c; }
private:
A * _a;
B * _b;
C * _c;
};
所以foo的例子看起来更多的东西现在这个样子
Foo(Interface * inf)
: Foo2(inf),
_a(inf->GetA()),
_b(inf->GetB()),
_c(inf->GetC())
{}
的好处是,每当一个新的类API到图片我可以把它添加到界面,也不需要再次更改几百个构造函数....
有没有人看到这个问题?我感觉我已经暴露了对某些类的访问,但它确实简化了对代码的编辑。
A,B,C是否相互关联,或者它们是正交的? – 2010-01-27 20:04:07