Chain of Responsibility
Реализовала паттерн "Цепочка обязанностей". По логике похож на беготню по кабинетам с бумажкой, где в кабинете 1 отправляют в кабинет 2, в кабинете 2 в кабинет 3... главное чтобы никто не отправил снова в 1. Ну тут я это предусмотрела, последним в цепочке стоит MyHandlerDefault, который гарантированно обрабатывает сообщение) Вот победю все паттерны и останется мелочь, выучить все остальное...
interface Handler {
fun handle(msg: String)
}
abstract class HandlerBase(val handler: Handler? = null) : Handler{
abstract fun handleInternal(msg: String) : Boolean
final override fun handle(msg: String) {
if (handleInternal(msg)) {
return
}
handler?.handle(msg)
}
}
class MyHandlerImpl(val letter: Char, handler: Handler?= null) : HandlerBase(handler) {
override fun handleInternal(msg: String): Boolean {
if (msg.contains(letter)) {
println("MyHandlerImlp $letter обработал сообщение")
return true
}
return false
}
}
class MyHandlerDefault() : HandlerBase(null) {
override fun handleInternal(msg: String): Boolean {
println("MyHandlerDefault обработал сообщение")
return true
}
}
@Configuration
class HandlersConfig {
@Bean
fun myHandlerChain() : Handler
= MyHandlerImpl('1',
MyHandlerImpl('2',
MyHandlerImpl('3',
MyHandlerDefault())))
}
@RestController
class HandlerController (
val handler : Handler
){
@GetMapping
fun case1(@RequestParam msg: String) {
handler.handle(msg)
}
}
Найди уже себе парня программиста😆
Парней-программистов не бывает. Как не пытаюсь познакомиться, за мужской аватаркой скрывается девка. Их всерьез никто не воспринимает, вот они и притворяются парнями...(
паттерны это конечно хорошо, но их не нужно заучивать наизусть. Нужно уметь их применять в нужном месте в нужное время.
Это верно, но не умея их реализовать и применить не сможешь))