Android 아키텍쳐 MVP 패턴

hjseo-dev·2022년 1월 1일
0

Android

목록 보기
2/18
post-thumbnail

MVP 패턴이란?

model, View, Presenter의 첫글자를 따서 지어진 패턴, View가 수동적으로 동작하여 Presenter가 명령을 내려 View에게 데이터를 보여달라고 하는 형태이다.

Model, View, Presenter 의 정의는 MVC 패턴과 크게 다르지는 않다.

  • Model : 애플리케이션 데이터와 상태에 대한 비즈니스 로직을 수행한다

  • View : 실제 View 에 대한 직접적인 접근을 담당한다

  • Presenter : 뷰와 모델 사이에서 데이터를 전달하는 역할을 한다

  • 도식화

View에서 클릭이나 사용자 액션이 발생하면 presenter를 호출하여 presenter.do()와 같은 로직이 수행된다. presenter는 모델을 변형하고 작업을 수행한 후에 결과를 다시 View에 전달한다.
결국, Presenter는 중재인으로 Model과 View사이의 필요한 작업을 수행한다.

단점은, 앱이 복잡해질 수록 View와 Presenter의 의존성이 강해진다. 너무 거대해지면 다루기 어렵고 분리하기 힘든 Presenter가 된다.

class Impl {
interface Presenter {
void loadData();
void createModel();
}

interface View {
void completed(String data);
}
}


class View implements Impl.View {

Presenter presenter;

public View (){
presenter = new Presenter(this);
presenter.createModel();
presenter.loadData();
}

@Override
public void completed(String data){
System.out.print(data);
}
}


class Presenter implements Impl.Presenter{

private Impl.View view;
private Model model;

public Presenter(Impl.View view){
this.view = view;
}

@Override
public void createModel(){
model = new Model();
}

@Override
public void loadData() {
if(model == null){
System.out.print("model is null");
return;
}

view.completed(model.getName());
}
}

class Model {
private String name = "kim";
public String getName(){
return name;
}
}

// 출처: https://pppdwer.tistory.com/entry/MVP-Model-VIew-Presenter-Pattern-의-기본-예 [Dev.]

위 예제를 통해 보면 view 는 Presenter에 선언된 행동을 받아, 필요한 정보를 요청하고 요청이 들어오면 Presenter의 callback으로 처리한다. 모델에 있는 데이터를 프레젠터에서 동작을 처리해 주어 view에서는 단지 데이터를 받아들이면 된다.

앞으로 실무에서 mvp 패턴을 활용할 기회가 많은 것 같아 간단히 정리해 보았다.

0개의 댓글