the service object(s) to be used the client object that is depending on the service(s) it uses the interfaces that define how the client may use the services the injector, which is responsible for constructing the services and injecting them into the client