Это зависит.
Это может быть один из тех сценариев, где не совсем правильный ответ . Это будет зависеть от того, как данные будут проходить через вашу систему, и от того, будет ли выгоднее просматривать эти отношения в ориентированной на данные или ориентированной на пользователя модели.
Старое эмпирическое правило заключается в том, чтобы просматривать объекты как существительные и методы как глаголы , когда вы пытаетесь моделировать вещи. Это может указывать на то, что Пользователь является объектом , а suspend является действием , которое вы можете выполнить.
Простой? Не совсем .
Кто-то еще может утверждать, что более разумно было бы описать приостановку как «AccountAction», а применение приостановки - как глагол. Это может привести вас к модели, в которой различные подклассы AccountAction имеют метод applyTo , который действует на другие типы объектов.
Возможно, вам придется применить ваши объекты к существующей схеме базы данных, и в этом случае вы должны будете учитывать, как ваш слой постоянства или ORM будут взаимодействовать с существующими структурами записей.
Иногда дело до технологии. ОО может быть реализован слегка разными способами в разных языковых семействах, и это тоже может повлиять на дизайн. Некоторые системы предпочитают более твердые графы наследования, другие языки подчеркивают более слабо взаимосвязанные объекты, передавая сообщения вокруг.
Вам нужно продумать свой дизайн с точки зрения того, как вы хотите взаимодействовать с данными и состоянием . Если вы думаете об объектах, как об экземплярах классов, представляющих состояния данных, с поведением, которое вы захотите вызвать, вы можете обнаружить, что шаблон существительных и глаголов выпадает из предложений, которые вы используете для описания системы.