Сущности открыты для расширения, закрыты для модификации. Новое поведение добавлять через новые классы/стратегии, а не правкой существующего кода.
// Расширение через новые классы, без изменения Processor
interface Handler { public function supports($request): bool; public function handle($request): mixed; }
class Processor {
public function __construct(private array $handlers) {}
public function process($request) {
foreach ($this->handlers as $h) {
if ($h->supports($request)) return $h->handle($request);
}
}
}