In the above UML class diagram, the Client class that requires ServiceA and ServiceB objects does not instantiate the ServiceA1 and ServiceB1 classes directly. Instead, an Injector class creates the objects and injects them into the Client, which makes the Client independent of how the objects are created (which concrete classes are instantiated). The UML sequence diagram shows the run-time interactions: The Injector object creates the ServiceA1 and ServiceB1 objects.