Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MVC에 대하여 설명해주세요. #17

Open
youn9k opened this issue Jan 4, 2025 · 4 comments
Open

MVC에 대하여 설명해주세요. #17

youn9k opened this issue Jan 4, 2025 · 4 comments

Comments

@youn9k
Copy link
Collaborator

youn9k commented Jan 4, 2025

  • Model, View, Controller의 각 역할에 대해 설명한다.
  • MVC의 장점과 단점을 설명한다.
  • 단점의 해결책으로 자연스럽게 MVVM으로 연결한다.
@hsw1920 hsw1920 added the pattern label Jan 4, 2025
@0Hooni 0Hooni added the week2 label Jan 4, 2025
@hsw1920
Copy link
Owner

hsw1920 commented Jan 7, 2025

Q. MVC 패턴에 대해 설명해주세요.
A.
가장 큰 MVC 패턴의 특징은 Model, View, Controller 의 세 부분으로 역할 분리를 명확히 한다는 것입니다.
App의 데이터, 비즈니스로직을 담당하는 Model
UI를 담당하는 View
Model과 View의 상호작용을 관리하는 Controller로 역할을 명확히 분리하여 코드의 유지보수성과 확장성, 재사용성을 높이는데 기여합니다.

다만, MVC 패턴은 Controller가 Model과 View 사이의 상호작용을 모두 관리하기 때문에 너무 많은 책임을 갖게 되는 경향이 있습니다.
이를 Massive ViewController 문제라고 부르며 코드가 복잡해지고 유지보수가 어려워질 수 있기 때문에 주의해야 합니다.

답변 의도

  • Model, View, Controller의 각 역할에 대해 설명한다.
  • Massive ViewController 문제를 언급한다. -> 이에 대한 개선책으로 MVVM이 나옴

@0Hooni
Copy link
Collaborator

0Hooni commented Jan 7, 2025

MVC는 소프트웨어 애플리케이션을 모델, 뷰, 컨트롤러로 분리하여 구조화하는 아키텍처 패턴입니다.

모델은 데이터와 비즈니스 로직을 관리, 뷰는 사용자에게 데이터를 시각적으로 표현, 마지막으로 컨트롤러는 사용자 입력을 처리하고 모델과 뷰 간의 상호작용을 관리해줍니다.

이러한 분리를 통해 코드의 재사용성과 유지보수성을 높이고, 애플리케이션의 확장성 또한 가져올 수 있습니다.

하지만 단점도 분명 존재합니다.

먼저 뷰와 컨트롤러가 많이 밀접해있는 구조이다보니 둘 사이가 완전한 역할 분리가 일어나고 있다 보기 어렵고, 많은 로직들을 컨트롤러에서 처리하다보니 컨트롤로의 구조가 복잡해지는 문제가 있습니다.

@Kiyoung-Kim-57
Copy link
Collaborator

MVC는 Model - View - Controller를 합친 말이다. 앱을 설계하면서 크게 객체를 3개의 역할로 분리하여 사용하는 디자인 패턴이다. 각각의 역할은 다음과 같다.

  • Model
    앱에서 사용하는 데이터와 이를 처리하는 비즈니스 로직을 포함한다.

  • View
    앱의 UI 요소를 의미한다. View는 데이터의 입력과 화면상의 출력을 담당한다.

  • Controller(ViewController)
    데이터와 View를 잇는 중간 다리 역할을 한다. 컨트롤러는 사용자의 입력에 맞는 이벤트를 처리해 모델을 적절하게 View에 전달하는 역할을 한다.

MVC 패턴은 모델, 뷰, 컨트롤러로 각 구성 요소의 역할을 명확하게 나눠 서로 다른 구성 요소에 끼치는 영향을 최소화한다. 그 덕에 코드 재사용성이 증가하고 테스트도 용이하다. 다만 MVC는 모든 요청 로직이 컨트롤러에 집중되면 컨트롤러가 비대해지는 문제가 발생한다.
비대해진 컨트롤러 문제를 해결하기 위해 MVVM과 같은 디자인 패턴을 사용할 수 있다.

@youn9k
Copy link
Collaborator Author

youn9k commented Jan 8, 2025

MVC 는 소프트웨어 아키텍쳐 패턴 중 하나로, 객체를 크게 Model, View, Controller로 나누어 역할을 분리합니다.
Model은 데이터와 비즈니스 로직을 담당, View는 사용자에게 보여지는 UI를 담당, Controller는 View로부터 전달된 사용자 입력에 따라 Model을 업데이트하거나, Model이 변경됨에 따라 View를 업데이트하는 등 Model과 View 사이를 연결해주는 역할을 담당합니다.
장점으로는 역할에 따라 객체를 분리함으로써 유지보수와 코드 재사용성이 올라간다는 장점이 있습니다.
단점으로는 Controller가 너무 많은 역할을 담당하게 되면 코드가 많아지게 되고, Controller가 비대해져 유지보수가 어려워질 수 있다는 문제가 있습니다.
이러한 문제를 해결하기 위해 Controller의 여러 책임을 다른 객체로 분리해 설계하거나, MVVM 아키텍쳐를 사용할 수 있습니다.

답변 의도

  • MVC 간단 설명 (Model, View, Controller)
  • 장점, 단점
  • 단점 해결방안

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants