Заказчик на вашем уровне представления не должен быть Заказчиком из вашего бизнеса или уровня данных. Клиент на вашем уровне представления должен быть чем-то похожим на ViewModel, поэтому он должен содержать только атрибуты и быть объявленным на бизнес-уровне. Это тип объекта, который должен быть отправлен на бизнес-уровень для CreateCustomer, который, в свою очередь, создает из него бизнес-объект или DAO и передает его на постоянство.
Презентационный слой
UserViewModel theUser=new UserViewModel(userNameField,passwordField);
userController.CreateUser(theUser);
Бизнес-уровень
public class UserController
{
public void CreateUser(UserViewModel user)
{
bool isUserValid=ValidateUser(user);
if(isUserValid)
{
UserEntity theEntity=new UserEntity(user);
_userRepository.Create(theEntity);
}
else
{
throw new InvalidUserException("This user isn't valid");
}
}
}
Уровень данных
public class UserRepository
{
public void Create(UserEntity user)
{
/* store user to database or whatever */
}
}