0

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

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

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


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

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