Не думаю, что вы предоставили достаточно информации для хорошего ответа. Как выглядят сообщения? Они различаются по содержанию / типу, или они все просто "сообщения"? Они взаимодействуют друг с другом или это просто преобразование формата данных? Одним из ключей к разработке ОО является осознание того, что игра «найди существительные-н-глаголы» (а это столько, сколько ты описал) редко приводит к лучшему решению. Это, конечно, не будет худшим, но в итоге вы получите агрегацию данных и кучу процедурного кода.
Процедурный код неплох, хотя. Почему это должно быть ОО? Требует ли сама проблема полиморфизма и сокрытия данных? Есть ли какое-то сложное поведение, которое вы пытаетесь смоделировать? Нет ничего постыдного в том, чтобы использовать решение без OO, когда проблема проста.