我有2节课:Bar和Foo。
它们都只派生两个接口:IActions和IOtherActions。
所以我们有这样的东西:
class Bar : public IActions ,public IOtherActions
class Foo : public IActions ,public IOtherActions
现在我有一个工厂,在这里我有逻辑来决定是否要使用Foo或Bar。
IActions* getActions();
IOtherActions* getOtherActions();
我的问题是,getActions()内部和getOtherActions()内部是完全相同的逻辑。
IActions* getActions()
{
// not trivial logic to decide which one to use and to create the instance
return instancePointer;
}
如我所说,getOtherActions()只是getActions()的复制粘贴,返回类型不同。
有什么办法可以将逻辑放在一个地方吗?
最佳答案
至少乍一看,您似乎可以使用一个模板(您将为每种返回类型显式实例化该模板):
template <class T>
T *getActions() {
// non-trivial logic
return isntancePointer;
}
...然后将实例化为
getActions<IActions *>
和getActions<IOtherActions *>
。