_

Always be tactful

Programming/Insights

[Java] MVC 패턴: 로또 애플리케이션 만들기 1편

funczun 2025. 2. 14. 02:14

 백엔드 개발자를 희망한다면서 지금까지 잘못된 방법으로 공부하고 있었던 것 같다. 알고리즘이나 조금 건드리고, 인프런 강의를 챙겨 들으며 문법을 배우는 것만으로도 충분히 잘하고 있다고 생각했다.
 
 현실은 JONNA 부족하다. 한 블록에 모든 내용을 담다가, 메서드로 분리하는 것을 적용해 보기까지도 엄청 오랜 기간이 걸렸다. 일부러 메서드로 빼는 연습을 계속하고 있다만 솔직히 지금도 잘 모르겠고 어렵다.
 
 자바의 메모리 영역이라던가 객체 지향이라던가, 아무튼 자세히 파고들면 머리 아픈 개념들이 참 많은데, 지금 당장 필요한 건 디자인 패턴이다. 진작에 스프링까지 공부했으면 조금 더 나았을까 싶기도 한데, 이제 와서 어쩌겠나.


 나는 지금까지 패키지 구조조차 명확하게 나누고 시작한 적이 없었다. 그런데 최근 느낀 것이, 내가 내 코드를 수정하는데도 너무 지치고 힘들었다.

 

 과거의 개발자들도 코드가 복잡해지면 복잡해질수록 유지보수에 불편함을 느꼈다고 한다. 그런데 계속해서 코드를 짜다 보니 그들만의 패턴이 보였고 이를 논문으로 발표해 MVC 패턴이라는 것이 세상 밖에 나오게 된다.

 

 쉽게 말해 MVC 패턴은 유지보수가 편해지는 코드 구성 방식이고, 이번 로또 애플리케이션 만들기는 나에게 충분히 복잡한 내용이기 때문에 이를 MVC 패턴으로 파훼해보고자 한다.


 보통 자기 자신은 자신의 결과물에 대해 객관적인 판단이 서지 않는 경우가 많다. 나 역시 내가 짠 코드에 대해 어디가 잘못되었는지 눈치채기가 어렵다. 그래서 나는 MVC 패턴을 제대로 구현하기에 앞서, 스스로 점검할 수 있도록 명확한 기준점을 세워두려 한다.


다음은 MVC 패턴을 위한 다섯 가지 규칙이다.

 

1. Model은 Controller와 View에 의존하지 않는다.

의존하지 않는다고 함은, 절대로 Controller와 View 클래스를 import 해서 사용하지 않는다.

 

2. View는 Model에만 의존하며, 절대 Controller에 의존하지 않는다.

View는 오직 Model로부터 정제된 데이터를 받아 사용할 수 있다.

 

3. Controller는 Model과 View에 의존할 수 있다.

Controller는 Model과 View 사이 중재 역할로, 두 클래스 모두 의존할 수 있다.

 

4. View가 Model로부터 받는 데이터는 유동적인 데이터여야 한다.

모든 사용자가 똑같이 보는 레이아웃은 View가 자체적으로 지녀야 할 정보들이다.

 

5. View가 Model로부터 데이터를 받을 때는 반드시 Controller에서 받는다.

예를 들어 Controller 코드 내에서 파라미터로 전달받는다.


로또 애플리케이션 만들기 2편