Skip to content

Commit

Permalink
refactor : 다형성을 이용해 분기삭제
Browse files Browse the repository at this point in the history
  • Loading branch information
mjj111 committed May 16, 2024
1 parent 03784cc commit 6a0b8a0
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 21 deletions.
28 changes: 7 additions & 21 deletions src/main/java/RequestHandler.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import model.HttpRequestMethod;
import model.User;
import controller.Controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import view.request.HttpRequest;
Expand All @@ -24,29 +23,16 @@ public void run() {
HttpResponse response = new HttpResponse(out);

String path = request.getPath();
String method = request.getMethod();

if("/users/create".equals(path) && HttpRequestMethod.POST.equals(method)) {
User user = new User(request.getParameter("userId"),
request.getParameter("password"),
request.getParameter("name"),
request.getParameter("email"));
String result = user.toString();

response.sendResponse(result);
}

else if(path.startsWith("/users") && HttpRequestMethod.GET.equals(method)) {
int wannaSize = Integer.parseInt(request.getParameter("size"));
String result = wannaSize + "만큼의 유저 정보를 읽기 원합니다.";

response.sendResponse(result);
log.info(path);
Controller controller = RequestMapping.getController(path);
if(controller == null) {
response.sendResponse("안녕하세요!");
}

else {
response.sendResponse("안녕하세요!");
controller.service(request, response);
}


} catch (IOException e) {
log.error(e.getMessage());
}
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/RequestMapping.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import controller.Controller;
import controller.CreateUserController;
import controller.UserListController;

import java.util.HashMap;
import java.util.Map;

public class RequestMapping {
private static Map<String, Controller> controllers = new HashMap<>();
static {
controllers.put("/user/create", new CreateUserController());
controllers.put("/users", new UserListController());
}

public static Controller getController(String requestUrl) {
return controllers.get(requestUrl);
}
}
24 changes: 24 additions & 0 deletions src/main/java/controller/AbstractController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package controller;

import model.HttpRequestMethod;
import view.request.HttpRequest;
import view.response.HttpResponse;

public abstract class AbstractController implements Controller{
@Override
public void service(HttpRequest request, HttpResponse response) {

if(HttpRequestMethod.POST.equals(request.getMethod())) {
doPost(request, response);
}
else {
doGet(request, response);
}
}

protected void doGet(final HttpRequest request, final HttpResponse response) {
}

protected void doPost(final HttpRequest request, final HttpResponse response) {
}
}
8 changes: 8 additions & 0 deletions src/main/java/controller/Controller.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package controller;

import view.request.HttpRequest;
import view.response.HttpResponse;

public interface Controller {
void service(HttpRequest request, HttpResponse response);
}
22 changes: 22 additions & 0 deletions src/main/java/controller/CreateUserController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package controller;

import model.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import view.request.HttpRequest;
import view.response.HttpResponse;

public class CreateUserController extends AbstractController {
private static final Logger log = LoggerFactory.getLogger(CreateUserController.class);

@Override
public void doPost(final HttpRequest request, final HttpResponse response) {
User user = new User(request.getParameter("userId"),
request.getParameter("password"),
request.getParameter("name"),
request.getParameter("email"));
String result = user.toString();

response.sendResponse(result);
}
}
18 changes: 18 additions & 0 deletions src/main/java/controller/UserListController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import view.request.HttpRequest;
import view.response.HttpResponse;

public class UserListController extends AbstractController {
private static final Logger log = LoggerFactory.getLogger(UserListController.class);

@Override
public void doGet(final HttpRequest request, final HttpResponse response) {
int wannaSize = Integer.parseInt(request.getParameter("size"));
String result = wannaSize + "만큼의 유저 정보를 읽기 원합니다.";

response.sendResponse(result);
}
}

0 comments on commit 6a0b8a0

Please sign in to comment.