Этот шаблон довольно распространен в OO-фреймворках. Он используется, потому что он дает инфраструктуре контроль над созданием объектов. Затем вы можете использовать его для различных целей, кеширования ваших объектов, использования его для принудительного вызова одиночных кодов, проверки ошибок (существует ли запрашиваемый вами объект?), Ведения журнала и почти всего, что вы хотите, когда кто-то создает экземпляр класса.
В качестве побочного эффекта это также создает хороший код. Например в PHP вместо
$person = new Person();
$person->setName('Mike');
вы можете сделать
$person = $this->load('Person')->setName('Mike');