Я думаю, что лучше дизайн оо бы
public class UserRegistry {
public void Register(User user) {...}
}
или общественного класса MyApplicationClient { общественного недействительными Регистрация (пользователь Пользователь) {...}}
Даже лучше может быть (вероятно, overkill, и не работает для вашего дела вообще):
public class UserRegistrar {
public void Register(User user, IUserRegistry userRegistry) {...}
}
public class MyApplicationClient : IUserRegistry {}
public IUserRegistry {
// Add, Remove, IsRegistered
}
Ваш первый вариант мог бы перевести ел на английском языке: «Регистрация, которая может регистрировать пользователя». Но регистрация (запись) является продуктом регистрации (процесса).
Второй вариант требует, чтобы пользователь знал контекст, в который он должен быть зарегистрирован, вы не говорите: «Эй, пройдите, зарегистрируйтесь в этом отделе». вы говорите: «Эй, отдел, вот пользователь - зарегистрируй его».
Таким образом, метод Register() действует на пользователя, пользователь регистрируется, он не должен содержать подробных сведений о том, как он зарегистрирован (простой тест: регистрация может быть различной в зависимости от того, какой пользователь контекста должен быть зарегистрирован, поэтому пользователь должны быть агностическими к деталям регистрации).
Итак, если пользователь регистрировался в клиентском приложении, у меня мог бы быть класс Client с методом Register? Я вас правильно понял? – Xaisoft
По существу, да, хотя слово «клиент» может привести к путанице, может быть лучше назвать его «ClientApplication». –