0

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

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

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


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

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