So I’m working to improve an existing implementation. I have a number of polymorphic classes that are all composed into a higher level container class. The problem I’m dealing with at the moment is that the higher level container class, well, sucks. It looks something like this, which I really don’t have a problem with (as the polymorphic classes in the container should be public). My real issue is the constructor…
/*
* class1 and class 2 derive from the same superclass
*/
class Container
{
public:
boost::shared_ptr<ComposedClass1> class1;
boost::shared_ptr<ComposedClass2> class2;
private:
...
}
/*
* Constructor - builds the objects that we need in this container.
*/
Container::Container(some params)
{
class1.reset(new ComposedClass1(...));
class2.reset(new ComposedClass2(...));
}
What I really need is to make this container class more re-usable. By hard-coding up the member objects and instantiating them, it basically isn’t and can only be used once. A factory is one way to build what I need (potentially by supplying a list of objects and their specific types to be created?) Other ways to get around this problem? Seems like someone should have solved it before… Thanks!
Dependency injection springs to mind.