An object factory
In some contexts, we need to create different types of objects, but we wish to manage their creation in a uniform way. Consider, for example, a word processor that need to allow the user to add elements to a document: words, paragraphs, images, sections, and so on. Each type of object will match a class or constructor that will create the required object and will put it on the document. This means that the document manager needs to know how to create each type of object. Moreover, when a new type of element is added to the word processor's capability, say tables, the document manager must be modified in order to learn how to create these new elements.
In these cases, the factory pattern can help us set up a more effective approach.
Understanding factories
In general, a factory is an entity (a function and an object) used to create objects, as in the following basic example:
function createPerson(name, surname) { return {name: name, surname: surname}; }
Unlike a constructor...