0

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

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

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


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

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