MVC 패턴

임정호·2022년 1월 14일
0

Spring공부

목록 보기
2/10

MVC(model–view–controller)는 소프트웨어 디자인 패턴이다.

사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.

MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다.

아래의 코드는 년,월,일을 넘겨 받아 해당하는 요일을 출력하는 코드이다.

public void main(HttpServletRequest request, 
		HttpServletResponse response) throws IOException {
		
	String year = request.getParameter("year");
	String month = request.getParameter("month");
	String day = request.getParameter("day");
	int yyyy = Integer.parseInt(year);
	int mm = Integer.parseInt(month);
	int dd = Integer.parseInt(day);
		
	Calendar cal = Calendar.getInstance();
	cal.set(yyyy, mm-1,dd);
	int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
	char yoil = "일월화수목금토".charAt(dayOfWeek);
		
	response.setContentType("text/html");
	response.setCharacterEncoding("utf-8");
	PrintWriter out = response.getWriter();
	out.println(year +"년 " + month +"월 " + day + "일은 ");
	out.println(yoil + "요일입니다.");
}

위 코드는 3개의 부분으로 나눌 수 있다.

  1. 입력받는 부분
  2. 요일을 구하는 부분
  3. 출력하는 부분

이렇게 구분된 작업을 관심사(Concern)라고 한다.

이는 OOP 5대 설계 원칙에서 S와 관련이 있다.

SRP(Single Responsibility principle) : 단일 책임 원칙

하나의 메서드는 하나의 기능만 수행해야 한다는 의미이다.
객체지향에서 좋은 설계를 하려면 코드의 분리를 잘해야 한다.

  1. 관심사의 분리
  2. 변하는 것과 (자주)변하지 않는 것의 분리
  3. 공통 코드(중복 코드)의 분리
public String main(int year, int month, int day,Model model) {
		
		if(!isValid(year,month,day)) {
			return "yoilError";
		}
		  
		char yoil = getYoil(year,month,day);
		
		model.addAttribute("year",year);
		model.addAttribute("month",month);
		model.addAttribute("day",day);
		model.addAttribute("yoil",yoil);
		
		return "yoil";
	}

입력의 분리(공통 코드의 분리)
출력의 분리(변하는 것과 변하지 않는 것의 분리)
출력 부분은 view.jsp에 연결

관심사를 분리하면 데이터 접근이 곤란하다. 서로 다른 영역으로 분리되었기 때문.

MVC 패턴

Controller가 처리 부분을 담당하여 출력하는 부분(view)에 결과 값을 전달해야 하는데, Model 객체를 이용한다.

Controller는 Model 객체를 생성하여, 결과를 model의 attribute에 저장한 후, view로 Model 객체를 전달한다.

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN