`$pattern` has a default value `''`, it's different from `BaseRoute::__construct()`