Производительность
При использовании Map
единственной стоимостью является доступ к HashMap
(незначительный). Отражение, с другой стороны, может занять гораздо больше времени и быть менее безопасным - помните, что вы должны убедиться, что пользователь не передает фальшивый command
, что позволяет ему запускать произвольный код.
Память
При создании DomainCommand
при запуске они через некоторое время окажутся в старом поколении, поэтому большую часть времени не будут подвергаться сборке мусора. С другой стороны, когда они создаются для каждого запроса, они, скорее всего, будут сразу же собирать мусор. Таким образом, в целом, объем памяти будет сопоставим, за исключением того, что второй подход требует более запусков GC.
В целом, карта команд - намного лучший подход. Кстати, если вы используете DI-фреймворки, такие как Spring или Guice (если это не слишком для вас), или веб-фреймворки, такие как Struts / Spring MVC, они будут выполнять точно такую же работу для вас.