본문 바로가기

Android/MVP

[Android] MVP 패턴에는 Contract 인터페이스가 꼭 필요할까?

반응형

Android MVP 패턴 예제 소스(구글꺼)를 보면 항상 Contract 인터페이스가 존재하는 걸 볼 수 있다. 

 

그리고 그 코드들을 보다보니 Contract 인터페이스를 빼도 되지 않을까라는 생각이 들게 되었고 실제로 Contract 인터페이스를 빼고도 구현을 할 수 있었다.

 

일단 Contract 인터페이스의 역할은 해당 View와 Presenter가 어떤 메소드(기능)들을 가져야한다는 것을 보여주는 것이라고 생각했었고 이러한 기능을 기준으로 Contract 인터페이스를 만들었을 때 좋은 점과 나쁜 점에 대해 생각해보았다.

 

1. 좋은 점

  • Contract 인터페이스 자체가 문서로써의 역할이 가능함
  • Contract 인터페이스가 Presenter와 View 간의 상호작용에 대한 설계를 도와줄 수 있음
  • 큰 프로젝트 혹은 개발자가 많은 팀들에서는 Contract 인터페이스가 의사소통에 도움을 줄 수 있음

2. 나쁜 점

  • 보일러플레이트 코드가 많아짐(Contract 자체를 계속 만들어야 하니까...)
  • 코드 수정시 Contract 인터페이스를 고쳐야 함으로 더 많은 오버헤드가 걸림
  • 소규모 프로젝트 혹은 소규모 팀에서는 이 부분이 부담이 될 수 있음

위와 같은 점들을 고려해서 선택해서 쓰면 될 것 같다. 하지만 그래도 문서를 따로 남기지 않는다는 점에서는 개인적으로는 Contract 인터페이스를 만드는 편이 더 좋다고 생각한다.

반응형

'Android > MVP' 카테고리의 다른 글

[Android] MVP 패턴에서 각각의 역할  (0) 2021.07.28
[Android] google mvp 샘플의 Injection.class 문제  (0) 2021.02.25