Factory and Service are different ways of doing DI (Dependency injection) in Angular. Please read the previous question to understand what is DI.
So when we define DI using service as shown in the code below. This creates a new GLOBAL instance of the Logger object and injects it in to the function.
app.service("Logger", Logger); // Injects a global objectWhen you define DI using a factory it does not create a instance. It just passes the method and later the consumer internally has to make calls to the factory for object instances.
app.factory("Customerfactory", CreateCustomer);Below is a simple image which shows visually how DI process for Service is different than Factory.

| | Factory | Service |
| Usage | When we want to create different types of objects depending on scenarios. For example, depending on scenario, we want to create a simple Customer object , or Customer with Address object or Customer with Phone object. See the previous question for more detailed understanding. | When we have utility or shared functions to be injected like Utility , Logger, Error handler, etc. |
| Instance | No Instance created. A method pointer is passed. | Global and Shared instance is created. |