Паттерн адаптер
Когда два объекта не могут поговорить, потому что каждый говорит на своём языке, Адаптер выступает в роли переводчика. Он берёт одного, который говорит "гав-гав", другого, который говорит "мяу-мяу", и делает так, чтобы они могли обсудить последние новости, даже не подозревая о языковом барьере. Без адаптеров наши программы были бы как попытка воткнуть евро-вилку в американскую розетку - ничего хорошего не вышло бы)
Мой путь к реализации всех основных паттернов при помощи связки спринг + котлин продолжается) Код ниже
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)
}
}
Хто хочет стать моим адаптером
Мне еще котик нравица трясущийся в смацликах. Сделайте мне тока его бесплатным пожалуста
Замечательно. Объясни так же просто паттерн Бридж
Завтра займусь мостом) если простыми словами - есть куча пультов от телевизоров и есть куча самих телевизоров. И нажатие кнопки включения / переключения каналов на любом пульте позволит включить / переключить канал на любом ТВ. При том что они от разных моделей / фирм
Ну и самое главное. Если добавить еще 1 пульт, он так же будет работать. Не меняя ничего в телевизорах
Завтра прям этот пример и напишу в коде
Вот бы все паттерны - в мультиках…