Здравствуйте, dip_2000, Вы писали:
_>Подскажите пожалуйста какой вариант предпочтительнее и почему?
Зависит от логики приложения.
Если Message только хранит свое состояние, и может быть использован различными модулями системы, то логично предположить, что
для одинаковое сообщение для разных модулей системы, может быть как валидное, так и нет, в этом случае валидность должен проверять
тот кто использует сообщение. Если же Message известно то состояние в котором он считается валидным, то пусть он сам себя и проверяет.
На этом и должен быть основан выбор конструкции реализации.