I'd like to implement factory (or some other pattern) in a way that will allow me to compile the code without introducing type dependency.
enum CarType
{
BMW,
PORSCHE,
MERC
};
class CarFactory
{
public:
static Car* create(CarType type)
{
switch(type)
{
case BMW : return new BMWCar();
case PORSCHE : return new PorscheCar();
default : return new MercCar();
}
}
};
When I compile CarFactory, I need to include BMWCar, PorscheCar and MercCar as a part of my compilation/linking unit.
The way my codebase is setup, we may want to ship BMWCar only, or two or all three of them. So, I cannot make the create() dependent on the type.
How can I adapt the factory pattern for this ? Also, I'd like to avoid doing ifdefs since this is just a sample of my problem. The real codebase is huge and is not a practical solution to ifdef the code.
Aucun commentaire:
Enregistrer un commentaire