Google에서 추천하는 MVP 아키텍처는 Contract를 사용하는 것 입니다.
Contract에는 View와 Presenter에 대한 interface를 작성합니다. Presenter는 Contract의 Presenter를 상속받아 구현하고, View 또한 Contract의 View를 상속받아서 구현 합니다.
구글에서 정의하는 Presenter 생성방법은 위와 같습니다.
저의 경우는 Presenter에서 생성자로 view를 받아 Presenter와 view를 연결 시켰습니다.
class MoviePresenterImpl(private val view: MovieContract.View,
private val repository: NaverRepository): MovieContract.Presenter
View에서는 직접 PresnterImpl를 생성하여 사용합니다.
presenter = MoviePresenterImpl( this, movieContainer.repository)
또한 View(Activity/Fragment)는 Contract의 View를 구현 합니다.
class MainActivity : AppCompatActivity(), MovieContract.View {}