First, if you've done any background reading before approaching this book, you will have heard the phrase concrete class. What does this mean? Well, simply put, it is the opposite of an abstract class; it is a class you can instantiate to make an object.
An Abstract Factory consists of the following classes: an Abstract Factory, Concrete Factory, Abstract Product, Concrete Product, and our client.
In the Factory pattern, we produced implementations of a particular interface (for example, notifier
was our interface and e-mail, SMS and post were our implementations). With an Abstract Factory pattern, we will create implementations of a factory interface, with every factory knowing how to create their products.
Suppose we have two toy factories, one in San Francisco and one in London. They both know how to create both company's products for both locations.
With this in mind, our ToyFactory
interface looks like this:
<?php interface ToyFactory { function...