Паттерн адаптер

Паттерн адаптер

Когда два объекта не могут поговорить, потому что каждый говорит на своём языке, Адаптер выступает в роли переводчика. Он берёт одного, который говорит "гав-гав", другого, который говорит "мяу-мяу", и делает так, чтобы они могли обсудить последние новости, даже не подозревая о языковом барьере. Без адаптеров наши программы были бы как попытка воткнуть евро-вилку в американскую розетку - ничего хорошего не вышло бы)

Мой путь к реализации всех основных паттернов при помощи связки спринг + котлин продолжается) Код ниже

interface PaymentManager { fun process(amount: BigDecimal, userUUID: UUID) } @Component("sbc") class PaymentManagerSbc : PaymentManager{ override fun process(amount: BigDecimal, userUUID: UUID) { println("Sbc: Платеж на сумму $amount для пользователя $userUUID") } } @Component class PaymentManagerTgr { fun processPayment(amount: BigDecimal, userID: Long) { println("Tgr: Платеж на сумму $amount для пользователя $userID") } } @Component("tgr") class PaymentManagerTgrToSbcAdapter( val paymentManagerTgr : PaymentManagerTgr ) : PaymentManager { override fun process(amount: BigDecimal, userUUID: UUID) { paymentManagerTgr.processPayment(amount, getIdByUUID(userUUID)) } private fun getIdByUUID(userUUID: UUID) = Random.nextLong() // логика получения ID из UUID } @RestController class PaymentController ( val paymentManagers : Map<String, PaymentManager> ) { @GetMapping("") fun case1( @RequestParam paymentType: String, @RequestParam amount: BigDecimal, @RequestParam uuid: UUID = UUID.randomUUID() ) { paymentManagers[paymentType]?.process(amount, uuid) } }
4
1
13 комментариев

Хто хочет стать моим адаптером

1

Мне еще котик нравица трясущийся в смацликах. Сделайте мне тока его бесплатным пожалуста

1
1
1

Замечательно. Объясни так же просто паттерн Бридж

1
Автор

Завтра займусь мостом) если простыми словами - есть куча пультов от телевизоров и есть куча самих телевизоров. И нажатие кнопки включения / переключения каналов на любом пульте позволит включить / переключить канал на любом ТВ. При том что они от разных моделей / фирм

Автор

Ну и самое главное. Если добавить еще 1 пульт, он так же будет работать. Не меняя ничего в телевизорах

Автор

Завтра прям этот пример и напишу в коде

Вот бы все паттерны - в мультиках…