アーキテクチャは何故必要なのか
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分