Re: Abstract Factory Design Patterns Advice
OK, I get your point. Why you say container is good for
polymorphism ?
In what situation container is more suitable than polymorphism ?
I mean that polymorphism and containers work very well together. You can
load a lot of different objects in for instance a std::vector and then
loop over the vector and run a common virtual method. Say you want to
initialize all your factories, then you don't have to write:
adminFactory.init();
hrFactory.init();
staffFactory.init();
but instead you just loop:
for( std::map<std::string, ObjectFactory*>::iterator i =
factoryMap.begin(); i != factoryMap.end(); ++i )
{
(*i).second->init();
}
I have a question here. After i create the appropriate user, how to
forward call to the user using this approach ?
It depends if the call is a common call receivable by all the users then
use polymorphism again:
class User // Interface
{
public:
virtual ~User() {}
virtual void receiveCall( const std::string& call ) = 0;
};
class AdminUser : public User
{
public:
virtual void receiveCall( const std::string& call ) { /* ... */ }
};
// Following may not be an optimal design, but rather a hint to your work.
User* user = factoryMap[userString]->createUser();
user->receiveCall( callString );
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]