Паттерн Abstract Factory

Когда используется? В чём особенности данного паттерна?

Предоставляет интерфейс для создания “семейства” взаимосвязанных объектов без указания их типов данных. Используется в случаях когда система не должна зависеть от способа создания и компоновки объектов и когда объекты взаимосвязаны и используются вместе.