Синглтон и даблчек

Рассмотрим использование двух паттернов программирования в kotlin — singleton и doublecheck.

У нас есть пример кода, где экземпляр класса получается как singleton. Для асинхронного вызова функции используется блок синхронизации.

Синглтон нужен в случаях, когда требуется использовать единственный экземпляр класса для всего приложения. Например, это может быть доступ к базе данных. При первом обращении через getInstance мы создадим экземпляр класса, а затем будем всегда возвращать этот экземпляр при любом обращении.

В методе getInstance мы также видим повторяющийся код :

Его обычно называют паттерном doublecheck. Не всегда ясно зачем так делается, т.к. код будет верно работать и без дублирования. Мы можем оставить этот код внутри syncronized блока и приложение будет работать корректно.

В данном случае это делается для оптимизации производительности, чтобы предотвратить вход в synchronized блок. Вызов getInstance всегда, кроме первого раза должен просто вернуть существующий экземпляр класса MyClass.

Синхронизация может потребоваться только, если до создания экземпляра мы вызвали getInstance из 2х и более потоков.

В дальнейшем нам уже не требуется синхронизация, поэтому проверку instance на null предпочтительнее иметь вне блока синхронизации.

Написать комментарий

Мало букафф? Читайте есчо !

Анимированный градиент в ActionBar

Октябрь 23, 2022 г.

Расскажу как создать фон для actionbar с анимацией градиента цвета. Нам понадобится Android Studio и Kotlin. Для начала добавим drawable ресурс в наш проект. Откроем в проекте вкладку res/drawable и выберем из меню File -> New -> Drawable ...

Читать

Фильтрация сообщений в logcat

Январь 10, 2025 г.

Android Studio пере-изобретает способ фильтрации сообщений в logcat в очередной раз. Теперь это инструкции, которые задаются сродни ключам командной строки. ...

Читать

 

Комментарии к «Синглтон и даблчек»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: