Я не рекомендую этот способ проверки ваших моделей.
Во-первых, контроллер должен проверить входные данные, чтобы убедиться, что это строка, когда она должна быть, целое число, когда оно должно быть, и так далее. Но НЕ бизнес логика.
Когда вы создаете нового члена, я предлагаю вместо этого передавать всю информацию через конструктор. Таким образом, конструктор может проверять согласованность модели OVERALL, в то время как методы сеттера должны иметь проверки согласованности для каждого элемента данных, за который они отвечают.
Например, если у вас была другая информация, например firstHeardOf (когда они впервые услышали о каком-либо сайте, членом которого они становятся), установщик должен убедиться, что это действительная дата и ПОСЛЕ даты рождения, по крайней мере. Это создает проблему упорядочения методов, и требование вызова методов в определенном порядке не является хорошей практикой, вместо этого конструктор можно использовать для гарантии упорядочения вызовов.
Метод save теперь является простым методом, он сохраняет данные, и действительно, почему он должен нести какую-либо другую ответственность. Самое большее, он должен дважды проверить, что созданный член все еще действителен, и именно здесь вы можете захотеть вставить код проверки конструктора в закрытый / защищенный метод проверки и вызвать его в обоих местах.
Быстрое слово об обязанностях и о том, как они распадаются здесь, по крайней мере, в моей голове:
- Конструктор отвечает за создание допустимого / правильно инициализированного объекта Member
- Установщики отвечают за установку допустимых данных в объекте-члене для данных
- Метод save отвечает за сохранение действительного объекта члена