개발/Java

[Java] 스프링 - DI, AOP / MVC 패턴 / MVP 패턴

Dane.Kim 2021. 10. 17.

DI(Dependency Injection) - 의존성주입

AOP(Aspect-Oriented Programming) - 관심지향 프로그래밍

DI : 객체에 속성값을 주입하는 방식으로, 모듈간의 결합도를 낮추어 유연한 코드를 작성하게 해주는 역할을 함

AOP :  프로그램 로직 중에 반복되는 코드를 횡으로 분리하여 중복된 코드를 줄여주고 핵심 로직에 대한 가독성을 높이는 역할을함

 

 

----

 

Model+ View + Controller = MVC

Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분

View : 사용자에게 보여지는 UI 부분

Controller : 사용자의 입력(Action)을 받고 처리하는 부분

동작 순서

  1. 사용자의 Action들이 Controller에 들어온다.
  2. Controller는 사용자의 Action을 확인하고, Model을 업데이트한다.
  3. Controller는 Model을 나타내줄 View를 선택한다.
  4. View는 Model을 이용하여 화면을 나타낸다.

MVC에서 View가 업데이트 되는 방법

  1. View가 Model을 이용하여 직접 업데이트
  2. Model에서 View에게 Notify하여 업데이트
  3. View가 Polling으로 주기적이게 Model의 변경을 감지하여 업데이트

MVC 패턴의 단점

  • View와 Model 사이의 의존성이 높다. View와 Model의 높은 의존성은 어플리케이션이 커질수록 복잡해지고 유지보수가 어려울 수 있다.

 

----

 

Model +View + Presenter = MVP 패턴

Presenter : View에서 요청한 정보로 Model을 가공하여 View에 전달해주는 부분

동작 순서

  1. 사용자의 Action들은 View를 통해 들어온다
  2. View는 데이터를 Presenter에 요청한다.
  3. Presenter는 Model에게 데이터를 요청한다.
  4. Model은 Presenter에서 요청받은 데이터를 응답한다.
  5. Presenter는 View에게 데이터를 응답한다.
  6. View는 Presenter가 응답한 데이터를 이용하여 화면을 나타낸다.

Presenter는 View와 Model의 인스턴스를 가지고 있어 둘을 연결하는 접착제 역할을 한다. Presenter와 View는 1:1관계이다.

MVP 패턴의 장점

  • View와 Model의 의존성이 없다. MVP 패턴은 MVC 패턴의 단점이었던 View와 Model의 의존성을 해결하였다. (Presenter를 통해서만 데이터를 전달받으므로

단점

  • View와 Model간 의존성은 해결했으나 View와 Presenter간의 의존성이 존재한다.

댓글