状態を持たないロジックを実装したいとき、以前は以下のように書いていました。
静的なクラスメソッドを使って、判定するみたいな。
class Validator private constructor() {
companion object {
fun validate(foo: String){
if foo == "NG"{
throw Exception("validation error")
}
}
}
}
呼び出し元イメージ
@RestController
class Controller(service: Service){
fun bar(@GetMapping String foo) {
Validator.validate(foo)
service.someMethod(foo)
}
}
ただ、現在はSpringを使って開発しており、DIが容易にできるようになりました。
以下のようなコンポーネントを作成し、DIをした方がよいのではないかと思い、実装方針を変えてみました。
理由としては、テスト時にmockしやすいのが一番の理由です。
@Component
class Validator {
fun validate(foo: String) {
if foo == "NG"{
throw Exception("validation error")
}
}
}
呼び出し元イメージ
@RestController
class Controller(service: Service, validator: Validator){
fun bar(@GetMapping String foo) {
validator.validate(foo)
service.someMethod(foo)
}
}