问题:
我有完全独立的软件管理器(软件实体),例如CCarManager,CTruckManager等。在某些时候,我正在创建新对象,例如CCar。 CCar必须与各种独立的管理器(例如,CResourceManager,CTruckManager)具有关系。将CCar与这些经理联系起来的最佳方法是什么?
解决方案:
[不喜欢全局变量]
[看起来不太好,但是可以传递一个指针]
[难以扩展]
[易于扩展,但主要重点是处理方法调用,哪些部分负责什么等,还有很多检查的]
类CCarFactory(CCarManager * pMngr)
{
CCar * CreateCar()
{
返回CCar(m_pCarManager);
}
还有哪些其他方式?
最佳答案
您可以在CResourceManager
的构造函数中传递对CTruckManager
,CCar
等的引用。
CCar(const CResourceManager& resourceMgr, const CTruckManager& truckMgr):
_resourceMgr(resourceMgr), _truckMgr(truckMgr) {
//relevant construtor code here
}
这样,也可以轻松地通过模拟实现进行测试。不知道'Manager类的作用是很难说的。
恕我直言,其名称以“Manager”结尾的类通常要么命名不正确(我做的次数超过了我的计算次数),要么设计得不好。