A simple factory is an object that is used to generate an instance of an object for the client.
The simplest way of understanding a factory is an object for creating other objects.
Real World Example
For example if we had 3 types of cars and wanted to create a factory that will create the car classes for us.
We can start with an interface to define a car.
<?php namespace SimpleFactory; interface Car
{ }
Then each car will implement this car interface.
<?php namespace SimpleFactory; class Tesla implements Car
{ }
Then we’ll create the factory to make these car classes.
<?php namespace SimpleFactory; class CarFactory
{
public function makeTesla() : Car
{
return new Tesla;
} public function makeBmw() : Car
{
return new Bmw;
} public function makeMercedes() : Car
{
return new Mercedes;
}
}
When To use
This can be very useful when you need a centralised location for creating objects. Let’s say these objects need to be created in a specific way with specific parameters each time the factory pattern allows us to put this into a factory instead of duplicating the code throughout the application.
Originally published at https://paulund.co.uk.