Kotlin Springboot -- 9부 도메인
7081 단어 cakotlinspringboot
왜
ドメインロジックの理解のため.
Person 全てではなく、Age が 10 未満の Person のみを返す機能を実装したかったから.
なぜ 게이트웨이 などには書かないか
게이트웨이 は単に 드라이버 の結果を 도메인 に詰め替える為の場所であるべきだから.
なぜ Usecase にロジックを書かないか。
유스케이스
ここをみたら ビジネスの都合で何をしているのかわかってほしい.
だから細かい実装の内容は書くべきではない.
Usecase に処理の呼び出しを書く
fun getU10Persons():Persons {
val persons = personsGateway.getAllPersons()
val age = Age(10)
return persons.filterByLessThan(age)
}
Gateway から呼び出したドライバーの処理をドmeinに詰め替えた結果.
このドメインの中のロジックに、さらに Age ドメインを渡して実行する.
도메인 に処理を書く
Persons のドメインに書いて終わりではない.
data class Persons(val list: List<Person>) {
fun filterByLessThan(age: Age): Persons {
return Persons(this.list.filter { it.isLessThan(age) })
}
}
Persons は内部로 Person(이) 一つ一つをmapして
条件に当てはまるものだけを返している.
その条件を Person のドメインに書いている.
data class Person(val name: Name, val age: Age) {
fun isLessThan(age: Age): Boolean {
return this.age.isLessThan(age)
}
}
Person のドメインでは Person の Age に生えている isLessThan の結果を返している
이 で中身の Age instansにアクセスできる.
data class Age(val value: Int) {
fun isLessThan(other: Age): Boolean {
return this.value < other.value
}
}
そして Age の中に比較関数の本體がある.
this.value が Person ドメインに入っている Age の実際の数値.
それに対して引数の比較対象は other.value にしている.
これ(this)と他(기타)の比較.そういう意味.
これで Persons ドメインで isLessThan 라고 하는 ロジックが機能する.
結果
쿼리 でかえられるともっと面白くて実用的かも知れない
@GetMapping("/persons/{age}")
@ResponseBody
fun getPersonsByAge(@PathVariable("age") age: Int): String {
val persons = personsUsecase.getPersonsByAge(Age(age))
Rest 에서 PathVar 에서 Int 에서 受け取って
Usecase に渡すまえに 나이 に詰めて
fun getPersonsByAge(age: Age):Persons {
val persons = personsGateway.getAllPersons()
return persons.filterByLessThan(age)
}
後は中で呼べば引数からの絞り込みが完成した.使いやすい.
Reference
이 문제에 관하여(Kotlin Springboot -- 9부 도메인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaede_io/kotlin-springboot-part-8-domain-nizhong-shen-nobi-jiao-nodomeinrozitukuwosheng-yasu-4c0f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)