title: Design Pattern for using different implementations of a class/method
body: <p>Sometimes we design more than one algorithm to get the same results. For instance, I have written a class which stores my data in trees, and another class that stores roughly the same data in, say, linked lists.</p>
  
  <p>I will publish an interface (abstract class) called ThingStore, and I'll subclass it to TreeThingStore and ListThingStore, each respectively using trees or linked lists. </p>
  
  <p>However, since I'm publishing an abstract class, I have to have someone to decide which implementation to use (<strong>EDIT</strong>: so the caller won't care about this), and I have no problem in having this hardcoded. I have needed this more than once, but I have looked at GoF and other Design Patterns catalogues unsuccesfully. The most similar pattern is the "Strategy" one, but it achieves diverse goals.</p>
  
  <p>So, is there a Design Pattern for this intent? If not, someone can create one or tell me why this should not be done (or better ways to achieve the same results)?</p>