0

Паттерны. Фабричный метод на PHP. Нарушение инкапсуляции

Alexandr 4 месяца назад обновлен Roman Martinuk 2 месяца назад 1
В примерах фабричного метода в абстрактном классе Создателя объявляется абстрактный публичный метод, но его использование должно быть доступно только внутри этого же класса, либо его потомков, т.е. он должен быть protected.
Иначе таким образом нарушается инкапсуляция.
Также затрудняется чтение этого примера, т.к. непонятно зачем этот метод публичный.

Если он не будет публичным то клиент не сможет его использовать. 


$creater = new ConcreteCreaterA()   или ConcreteCreaterB()

Клиент в своем коде должен иметь возможность вызывать $creater->createProduct()  иначе смысл паттерна теряется.

Сервис поддержки клиентов работает на платформе UserEcho