微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的 UserFactory 填充数据是否违反了 DRY?

如何解决我的 UserFactory 填充数据是否违反了 DRY?

我正在执行采用 RegisterUserService 参数的 request,并在验证后通过将 newUser 发送到 UserFactory 类的 request 方法来创建 fillNewUser()。但问题是,在 fillNewUser() 方法中,我必须再次从请求中获取所有参数。是否违反 DRY?

public class RegisterUserService {

private final UserFactory userFactory = UserFactory.getInstance();

public void execute(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException,sqlException {

    HttpSession session = request.getSession();
    Requestdispatcher dispatcher;
    Boolean isAllOkWithEmail = false;             //just for example     
    Boolean isAnotherParameterChecking = false;   //just for example   

    String email = request.getParameter(USER_EMAIL).trim();
    String login = request.getParameter(USER_LOGIN).trim();
    String password = request.getParameter(USER_PASSWORD).trim();

     // here I am validating request parameters
    if (!isAllOkWithEmail) {
     // displaying errors
    } else if (!isAnotherParameterChecking) {
     // checking and displaying errors
    } else {
        /// filling new registered User with UserFactory for Single Responsibility
        User user = userFactory.fillNewUser(request);
        userDAO.insert(user);

        session.setAttribute(USER,user);
        dispatcher = request.getRequestdispatcher(INDEX_JSP);
        dispatcher.forward(request,response);
    }
}

我的用户工厂:

public class UserFactory {

private static UserFactory instance = new UserFactory();

private UserFactory() {
}

public User fillNewUser(HttpServletRequest request) {
    User user = new User();
    // Writing here same code and violating DRY????
    user.setEmail(request.getParameter(USER_EMAIL).trim());
    user.setLogin(request.getParameter(USER_LOGIN).trim());
    user.setPassword(request.getParameter(USER_PASSWORD).trim());

    return user;
}

public static UserFactory getInstance() {
    return instance;
}

}

或者有更好的解决方案吗?

谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。