Chain of Responsibility

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) } }
2
5 комментариев

Найди уже себе парня программиста😆

Парней-программистов не бывает. Как не пытаюсь познакомиться, за мужской аватаркой скрывается девка. Их всерьез никто не воспринимает, вот они и притворяются парнями...(

1
1

паттерны это конечно хорошо, но их не нужно заучивать наизусть. Нужно уметь их применять в нужном месте в нужное время.

Это верно, но не умея их реализовать и применить не сможешь))