实践过程中经常遇到这种情况:有多个同类型object,这些object会通过一个manager来管理,外部通过manager接口增加,删除,查询,更改object;如果整个工程中有很多不同类型的object,这些object分别由其对应的mananger来管理;这些不同类型的manager在增加,删除,查询,更改object的代码基本类似,差别只是类型不一样;可否通过技巧把这些代码复用,使工程中只有一处这样的代码?方法是通过模板来实现,具体方法如下:
// 模板manager
template<class _C, class _I = IManager>
class CObjectManager_T : public _I
{
typedef std::vector<_C*> ObjectArray;
public:
CObjectManager_T();
~CObjectManager_T();
bool AddObject(_C* pObject);
bool DelObject(_C* pObject);
long GetObjectCount();
_C* GetObjectAt(long i);
private:
ObjectArray m_ObjectArray;
};
在使用的时候:
CObjectManager_T< Object1 > m_Object1Manager;
CObjectManager_T< Object2 > m_Object2Manager;
CObjectManager_T< Object3 > m_Object3Manager;
来源:CSDN
作者:grefen
链接:https://blog.csdn.net/sohu_2011/article/details/7168389