Вы неправильно поняли закон Деметры и применяете его за пределами полезности:
Более формально, закон Деметры для функций требует, чтобы метод Mобъекта O может вызывать методы только следующих типов объектов:
- самого O
- параметров M
- любых объектов, созданных / созданных в рамках M
- Объекты прямого компонента O
- глобальная переменная, доступная для O, в области M
В частности, фабрики используются для создания объекта, итип создаваемого ими объекта является частью их открытого интерфейса.Таким образом, вызов методов для объекта, созданного фабрикой, разрешён выше.