We have lot of object with this kind of design : Interface and several implementations, and use of several object by composition. Exemple : Foo implements IFoo and have a Bar object who implements IBar Foo also have a setBar(IBar bar) method for injection of dependancie. We have lot of object with this kind of design