Revision: 68642
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 2, 2015 13:48 by dongwonkwak
Initial Code
template
<
class AbstractProduct,
typename IdentifierType,
typename ProductCreator = std::function<AbstractProduct* ( void)>
>
class Factory
{
public:
bool Register(const IdentifierType& id, ProductCreator creator)
{
associations_.insert(
AssocMap::value_type(id, creator));
return true ;
}
AbstractProduct* CreateObject( const IdentifierType& id)
{
typename AssocMap::const_iterator i =
associations_.find(id);
if (i != associations_.end())
{
return ((*i).second)();
}
return NULL;
}
private:
typedef map<IdentifierType, ProductCreator> AssocMap;
AssocMap associations_;
};
Initial URL
Initial Description
template factory in modern c++ design
Initial Title
Template Factory
Initial Tags
design, c++
Initial Language
C++