Kotlin Springboot -- Part 4 도메인에서 Value Object を定義して Driver->Gateway->Usecase と連れ込んでいく

6128 단어 kotlin

도메인




data class Persons(val list: List<Person>)
data class Person(val name: Name, val age: Age)
data class Name(val value: String)
data class Age(val value: Int)


OBJECT 指向らしく, 全 てのプロパティをデータクラスで定義する.
細かいデータクラスを 사람, 사람 でまとめていく

https://blog.applibot.co.jp/2018/03/22/inheritance-for-dataclass-kotlin/

데이터 클래스 は getter/setter などをはやしてくれるもの

운전사



ここから先は全ての層ごとにひとつのクラスで書く

class PersonDriver() {
  companion object {
    private val data:Persons = Persons(listOf(
      (Person(Name("taro"), Age(12))),
      (Person(Name("hanako"), Age(10))),
    ))
    fun findAll():Persons {
      return data
    }
  }
}


コンパニオンOBJECUTで書くとクラス外部から参照できる.
드메인을つかってデータを定義して
全てを返す関数の findAll を作る


게이트웨이




class PersonsGateway() {
  companion object {
    fun getAllPersons():Persons {
      return PersonDriver.findAll()
    }
  }
}


드라이버 の findAll を呼ぶ


유스케이스




class PersonsUsecase() {
  companion object {
    fun getAllPersons():Persons {
      return PersonsGateway.getAllPersons()
    }
  }
}


게이트웨이 の getAllPersons を呼ぶ
同名で定義するので処理はない.
CA の理解のための形式的なもの.


쉬다




@Controller
class PersonHandler {
  @GetMapping("/persons")
  fun getAllPersons(model:Model): String {
    val persons: Persons = PersonsUsecase.getAllPersons()
    model["title"] = persons.toString()
    return "index"
  }
}


Usecase から呼び出して/persons へのマッpingingに当てる


편물



미레루

좋은 웹페이지 즐겨찾기