🕵️
Введение в паттерны
  • Введение в паттерны
  • Паттерны
    • Оглавление
    • Порождающие паттерны
      • Фабричный метод
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Абстрактная фабрика
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Прототип
        • Реализации на С++
        • Реализации на Kotlin
        • Реализации на Java
        • Возможные реализации для решения конкретных задач на С++
      • Строитель
        • Реализации на С++
        • Реализации на Kotlin
      • Одиночка
        • Реализации на C++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач на С++
      • Пул объектов
        • Реализации на С++
    • Структурные паттерны
      • Адаптер
        • Реализации на С++
        • Реализации на Kotlin
        • Возможные реализации для решения конкретных задач
      • Декоратор
        • Реализации на С++
        • Реализации на Kotlin
      • Компоновщик
        • Реализации на С++
      • Мост
        • Реализации на С++
      • Заместитель
        • Реализации на С++
        • Реализации на Kotlin
      • Фасад
        • Реализации на С++
      • Приспособленец
        • Реализации на С++
    • Поведенческие паттерны
      • Стратегия
        • Реализации на С++
        • Реализации на Kotlin
      • Команда
        • Реализации на С++
        • Реализации на Kotlin
      • Цепочка обязанностей
        • Реализации на С++
        • Реализации на Kotlin
      • Подписчик-издатель
        • Реализации на С++
        • Реализации на Kotlin
      • Посетитель
        • Реализации на С++
        • Возможные реализации для решения конкретных задач
      • Посредник
        • Реализации на С++
        • Реализации на Kotlin
      • Шаблонный метод
        • Реализации на С++
      • Опекун
        • Реализации на С++
      • Итератор
        • Реализации на С++
        • Реализации на Kotlin
      • Свойство
        • Реализации на С++
        • Возможные реализации для решения конкретных задач
  • Введение в идиомы
  • Идиомы
    • Оглавление
    • RAII
    • Type erasure
      • Контейнеры с type erasure
    • CRTP
    • Статический полиморфизм
    • Shrink to fit
    • Proxy
    • Erase remove
    • Decltype (auto)
    • Copy and swap
    • Safe bool
    • Scope guard
    • Addressof
Powered by GitBook
On this page

Was this helpful?

  1. Паттерны
  2. Структурные паттерны
  3. Заместитель

Реализации на Kotlin

Proxy

Общая реализация на языке Kotlin

class HashMapProxy<K, V>(
    private val hashMap: MutableMap<K, V>
) : MutableMap<K, V> by hashMap {
    override fun get(key: K): V? {
        val result = hashMap[key]
        if (result == null)
            println("No value under this key found.")
        return result
    }

    override fun put(key: K, value: V): V? {
        val result = hashMap.put(key, value)
        if (result == null)
            println("Value successfully added. No previous values under this key.")
        return result
    }
}
private const val TEST_KEY = "Zero"
private const val TEST_EXCEPTION_KEY = "One"
private const val EXCEPTION_DESCRIPTION = "No such key or value under this key"
private const val TEST_VALUE = 56

fun main() {
    val hashMap = mutableMapOf<String, Int>()
    val proxy: MutableMap<String, Int> = HashMapProxy(hashMap)

    println("Is has map empty: ${proxy.isEmpty()}")
    proxy.put(TEST_KEY, TEST_VALUE)

    try {
        println("Trying to get value: ${proxy.get(TEST_EXCEPTION_KEY)}")
    } catch (e: NullPointerException) {
        println(EXCEPTION_DESCRIPTION)
    }

    println("Is hash map contains key = ${TEST_KEY} : ${proxy.containsKey(TEST_KEY)}")
    println("Is hash map contains value = $TEST_VALUE : ${proxy.containsValue(TEST_VALUE)}")
}
PreviousРеализации на С++NextФасад

Last updated 1 year ago

Was this helpful?