Паттерн Фабричный метод — продвинутая версия

Фабричный метод — это паттерн программирования, который используется для получения экземпляров объектов на основе некоторого заданного параметра. В своих PHP-проектах, я часто использую его. Но в других проектах, которые я вижу, многие фабричные классы весьма запутанны. Рассказываю как их распутать.