С точки зрения шаблона проектирования не имеет значения, как объект Command
получает от Client
, который его создает, до Invoker
, который его выполняет. Если Client
напрямую передает его в Invoker
(и, следовательно, имеет прямую зависимость), это нормально. Если Client
сохраняет Command
в базе данных, а Invoker
позже получает его, это тоже хорошо.
С точки зрения UML, между Client
и Invoker
нет строки. потому что не должно быть. Добавление этой строки может означать, что необходима зависимость.
С точки зрения примера кода создание всего в одном главном классе просто и понятно, поэтому понятно, почему вы видите, как это реализовано в многочисленных руководствах. Просто помните, что вы можете увидеть, как шаблон реализован несколько иначе в реальном мире и все еще следует UML.