factory pattern
Java
A pattern of class definition that is used as a generator of instances of other classes. Often used to create platform- or locale-specific implementations of abstract classes or interfaces. This reduces coupling between classes as it frees the factory's client from a need to know about particular implementations.