OOP 5대 설계원칙 - SOLID
SRP
단일책임의 원칙 - 하나의 메서드는 하나을 책임만 진다
분리
1.관심사의분리, 2.변하는 것, 변하지 않는 것 분리, 3.공통코드(중복코드)의 분리
입력의 분리
request객체가 아닌 개별 값을 매개변수로 받을 수 있음.
(int year, int month, int day)
request -> String -> int (스프링이 자동 변환)
처리부분 분리
출력을 분리하면 매개변수 사용 못 함.
==> 중간 객체인 Model 객체를 사용
처리 한 값을 Model에 저장해서 출력으로 전달.
MVC패턴.(분리된 두 코드간의 데이터 전달을 위해 모델이 필요)
1.입력(DispatcherServlet) -- 2.처리(컨트롤러)
|
|
3.출력(뷰)
입력 : 요청을 받은 내용을 DispatcherServlet이 모델에 넣어서 컨트롤러로 전달.
처리 : 컨트롤러에서 처리한 값을 모델에 넣어서 DispatcherServlet으로 전달.
뷰 : DispatcherServlet에서 모델을 받아서 응답을 만들어서 클라이언트로 전달.
@Controller
public class YoilTeller {
@RequestMapping("/getYoil")
public String main(int year, int month, int day, Model m) {
//1. 유효성 검사
if(!isValid(year, month, day))
return "yoilError"; //유효하지않으면 yoilError.jsp로 이동
//2. 처리
char yoil = getYoil(yaar, month, day);
//3. Model에 작업 결과 저장
model.addAttribute("year", year); //key=value형태의 map으로 저장
model.addAttribute("month", month);
model.addAttribute("day", day);
model.addAttribute("yoil", yoil);
//4. 작업 결과를 보여줄 View의 이름을 반환
return "yoil"; // /WEB-INF/views/yoil.jsp
}
}
@Request