すわりんのブログ

androidとかサブカルとかのブログです

アーキテクチャは何故必要なのか

Android界隈ではよくアーキテクチャが話題になっている。

MVCから始まり、MVPやMVVM、AndroidArchitectureなどなどその内容は多岐に渡る。

 

このアーキテクチャ達を採用することで何が解決出来るのかというと

いくつか見えてきた事がある。

 

まずはレイヤー分けがしっかり出来る事。

その場その場でInterfaceやclassを作らず

一貫した規則で作る事ができる。

よってメンテナンスする際に、どこを修正すれば良いのかが

一目瞭然となる。

 

次にテストがしやすいこと。

interfaceから定義するので

mockオブジェクトを入れ込みやすい。

 

interface LoginContract {

  interface View {

     fun showData(data:String)

     fun showError()

  }

  interface Presenter {

     fun onSomeButtonClick()

  }

}

 

interface DataSource {

  fun create()

  fun update()

  fun read()

  fun delete()

}

 

//viewとdataSourceはinterfaceなのでmock化しやすい

class LoginPresenter(

  val view:LoginContract.View,

  val dataSource:DataSource   ):LoginContract.Presenter {

 

}

 

この場合LoginPresenterのセットアップは

mockを呼び出すだけで良くなる。

 

 

class LoginPresenterTest {

 

   private presenter = LoginPresenter(mock(),mock())

 

   @Test

   fun somethingTest(){

       //ボタンを押すとviewにdataが表示される

       presenter.onSomeButtonClick()

 

       verify(view.onShowData(any()))

   }

}

 

 

最近はMVPで書いてる事が多いけれど

テストも回せるし、あとから読んでもどこを直せば良いか見当がつきやすくなった。

 

[所要時間]17分