An important part of being able to discuss product design and architecture is having a common language, design patterns are a part of this common language. This document seeks to help the reader to develop this common language by allowing them to match the name to the implementation.
The following patterns are found regularly in code and will often communicate the pattern they follow in their naming.
A method which can be called on an abstract class or interface that is able to construct and return an instance of another class based off an abstract class or implementing an interface. …