java - UserFactory 对 User 对象的填充数据是否违反了 DRY?
问题描述
我这样做RegisterUserService
需要request
参数并在验证后newUser
通过发送request
到fillNewUser()
UserFactory 类的方法来创建。但是问题来了,在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;
}
}
或者有没有更好的解决方案?
谢谢!
解决方案
推荐阅读
- python - 在 Tensorflow 2.3.1 中读取损失函数的值
- python - 从两个字典创建新字典,其中键作为第一个字典的值,值作为第二个字典的值
- mysql - 带有子查询的 CTE 查询在小型索引表上很慢;如何在 MySQL 上进行优化?
- java - 问题 JPA/休眠
- python - 有人可以帮我理解 Zed Shaw 的 Learn Python 3 the Hard way 中的 ex23
- sql - INNER JOIN 的多个表的搜索条件
- r - 在制作ggplot轴标题时,我如何写£^-1?
- xslt - 在 msxml 中实现评估(XPath)
- python - 如何比较if语句中的字符串列表?
- sql - 如何在 SQL 中为每个带有行号的 user_id 选择最大收入?