Хорошо, ваш заголовок содержит шаблон для обработки событий. Если вы говорите о реальной структуре событий, то вам на ум приходит модель Observer / Observable. Это сработает, если вы захотите запустить событие какого-либо типа, а затем обработчики событий начнут обрабатывать события.
Похоже, ваша проблема в деталях реализации шаблона команды. Можете ли вы опубликовать код, который показывает, где вы застряли?
Обратите внимание, что шаблоны не являются взаимоисключающими, вы можете использовать шаблон команды в контексте шаблона Observable.
РЕДАКТИРОВАТЬ - на основе вашего кода, вы должны
1) сделать CommandFactory
статическим.
2) передать тип в метод getCommand
, который также должен быть статическим.
3) Для этого вам не нужно размышлять, вы можете просто сделать
if (type == "type1") return new Command1();
else if (type == "type2") return new Command2();
...
Я не говорю, что вы не можете использовать отражение, я говорю, что это слишком усложняет то, что вы пытаетесь сделать. Кроме того, они так, как вы это делаете, связывают строку, представляющую тип сообщения, с деталями реализации имен классов команд, что кажется ненужным.