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

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

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

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

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

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

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

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

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

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

View Binding в kotlin

Февраль 15, 2025 г.

Иногда на собесах спрашивают что такое view binding, и звучит это как некая сложная тема, но на самом деле, это просто фича сборщика, которую можно использовать для упрощения доступа к элементам шаблонов. Этот механизм упрощает работу с элементами ...

Читать

Вызов одного конструктора в другом в Kotlin

Январь 21, 2025 г.

Если вы переходите с java на kotlin, то у вас часто возникают вопросы вроде - как сделать на kotlin то, что вы делали на java вот так и так. В java вызов перегруженного конструктора в другом конструкторе класса выглядит следующим образом. Представим, ...

Читать

Notification в Android

Март 1, 2025 г.

Как показать уведомление в android? Мало того, что сообщения имеют довольно сложную структуру, но они еще и зависят от версии API, под которое билдится приложение. Чтобы показывать уведомления, начиная с 33 версии API, вы должны добавить в ...

Читать

Автоинкремент версии билда в проекте на kotlin

Февраль 9, 2025 г.

Куча готовых решений в сети, но почему то ничего не работает. Пришлось исследовать этот вопрос. Оказалось, что gradle.kts это тоже kotlin скрипт, который выполняется каждый раз при сборке проекта. И задача состоит в том, чтобы увеличивать версию ...

Читать
 

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

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



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