Другие недостатки паттерна, которые я вижу:
1. Нельзя вынести интерфейс и подменить одну реализацию синглтона на другой (нарушение DIP)
2. Паттерн синглтон нарушает SRP, потому что отвечает дополнительно за создание и удаление самого себя. Это может усложнить разработку, если жизненный цикл синглтона не соответствует жизненному циклу программы
3. Использование синглтонов, усложняет тестирование, поскольку классы, использующие синглтоны, имеют неявные зависимости
Но это не означает, что его нужно избегать. На мой взгляд синглтоны нужно применять в правильных ситуациях, когда к объекту нужно обращаться из абсолютно разных точек программы.
Например, это может быть плагин аналитики, в которую нужно отправлять данные или универсальная аудиосистема, которая отыгрывает звуки, но не EnemySpawner, который используется только для EnemySystem.
Еще обязательным условием использованием синглтона является то, что синглтон должен существовать весь жизненный цикл работы программы, и к нему всегда должен быть доступ.
Таким образом, для работы с бизнес-логикой рекомендую использовать паттерн Dependency Injection (фреймворк Zenject/VContainer). Это даст возможность переиспользовать, тестировать и подменять реализации классов, фокусируясь на решении задач, а не выстраивании архитектуры (рис. 3). А синглтоны использовать только в тех случаях, когда нужно получать универсальный модуль из разных точек программы, и этот "волк" живет все время приложения.
1. Нельзя вынести интерфейс и подменить одну реализацию синглтона на другой (нарушение DIP)
2. Паттерн синглтон нарушает SRP, потому что отвечает дополнительно за создание и удаление самого себя. Это может усложнить разработку, если жизненный цикл синглтона не соответствует жизненному циклу программы
3. Использование синглтонов, усложняет тестирование, поскольку классы, использующие синглтоны, имеют неявные зависимости
Но это не означает, что его нужно избегать. На мой взгляд синглтоны нужно применять в правильных ситуациях, когда к объекту нужно обращаться из абсолютно разных точек программы.
Например, это может быть плагин аналитики, в которую нужно отправлять данные или универсальная аудиосистема, которая отыгрывает звуки, но не EnemySpawner, который используется только для EnemySystem.
Еще обязательным условием использованием синглтона является то, что синглтон должен существовать весь жизненный цикл работы программы, и к нему всегда должен быть доступ.
Таким образом, для работы с бизнес-логикой рекомендую использовать паттерн Dependency Injection (фреймворк Zenject/VContainer). Это даст возможность переиспользовать, тестировать и подменять реализации классов, фокусируясь на решении задач, а не выстраивании архитектуры (рис. 3). А синглтоны использовать только в тех случаях, когда нужно получать универсальный модуль из разных точек программы, и этот "волк" живет все время приложения.
👍13🔥2🥰1
Принцип SRP vs принцип KISS. Как найти золотую середину?🤔
Сегодня я вам расскажу что делаю именно я)
🔥/🤯
Жмите на посмотреть ↓
Сегодня я вам расскажу что делаю именно я)
🔥/🤯
Жмите на посмотреть ↓
Teletype
Принцип SRP vs Принцип KISS. Как найти баланс?
Всем привет, сегодня я хотел бы поделиться опытом, как писать код так, чтобы система была с одной стороны гибкой, а с другой...
🔥13👍6🤯1
Ребята, всем привет👋
Поздравляю вас с наступающим новым годом и хочу поделиться интересной информацией, которую вы можете глянуть в этом ролике
Вкратце, 20го числа в 19 00 по мск я провожу открытый урок по атомарному подходу, поэтому если вам интересно узнать что-то новое и улучшить свои навыки в программировании, то welcome😎
Помимо этого, я также разработал специальный курс, в котором мы будем разбирать механики и атомарный подход на примере разработанной мной игры - Top-Down Zombie Shooter.
Ссылку на сайт с курсом также прикрепляю
Поздравляю вас с наступающим новым годом и хочу поделиться интересной информацией, которую вы можете глянуть в этом ролике
Вкратце, 20го числа в 19 00 по мск я провожу открытый урок по атомарному подходу, поэтому если вам интересно узнать что-то новое и улучшить свои навыки в программировании, то welcome😎
Помимо этого, я также разработал специальный курс, в котором мы будем разбирать механики и атомарный подход на примере разработанной мной игры - Top-Down Zombie Shooter.
Ссылку на сайт с курсом также прикрепляю
YouTube
Атомарный подход в Unity
Друзья, всем привет!
Это видео для тех, кто хочет в Новом Году еще больше прокачать свои скилы в Unity. А именно - узнать, понять и полюбить атомарный подход.
Всех с наступающим Новым Годом!
Всю информацию о курсе можно узнать на сайте: https://unitycodecraft.ru…
Это видео для тех, кто хочет в Новом Году еще больше прокачать свои скилы в Unity. А именно - узнать, понять и полюбить атомарный подход.
Всех с наступающим Новым Годом!
Всю информацию о курсе можно узнать на сайте: https://unitycodecraft.ru…
🔥8❤3👍3
Закрепляю ссылку на стрим по атомарному подходу 🤗
20-го декабря в 19 00 по мск
https://www.youtube.com/live/BB8tgIX9AXY?si=JmP7ydYhmto7lL37
20-го декабря в 19 00 по мск
https://www.youtube.com/live/BB8tgIX9AXY?si=JmP7ydYhmto7lL37
YouTube
Введение в Атомарный подход (Часть 1)
На данном открытом уроке мы разберем, что такое атомарный подход и рассмотрим, как можно реализовать и повторно использовать механики персонажа в Unity!
Всю информацию о курсе можно узнать на сайте: https://unitycodecraft.ru
Телеграм канал: https://t.me/unitycodecraft…
Всю информацию о курсе можно узнать на сайте: https://unitycodecraft.ru
Телеграм канал: https://t.me/unitycodecraft…
👍8❤3
Unity Craft pinned «Закрепляю ссылку на стрим по атомарному подходу 🤗 20-го декабря в 19 00 по мск https://www.youtube.com/live/BB8tgIX9AXY?si=JmP7ydYhmto7lL37»
Ребята, написал статью. Надеюсь, вам будет интересно ознакомиться перед стримом
Хабр
Атомарный подход в Unity
Привет, Хабр! 👋 Меня зовут Игорь, и я Unity Developer. Последние несколько месяцев я разрабатываю зомби шутер в Unity на атомарном подходе. Несмотря на то, что подход оказался достаточно удобным и...
🔥22
Ребята, спасибо большое за стрим, было приятно провести с вами время! ☺️
Прикрепляю ссылку на запись стрима, как и обещал. Для удобства добавил тайм-коды 😎
Прикрепляю ссылку на запись стрима, как и обещал. Для удобства добавил тайм-коды 😎
YouTube
Введение в Атомарный подход (Часть 1)
На данном открытом уроке мы разберем, что такое атомарный подход и рассмотрим, как можно реализовать и повторно использовать механики персонажа в Unity!
Всю информацию о курсе можно узнать на сайте: https://unitycodecraft.ru
Телеграм канал: https://t.me/unitycodecraft…
Всю информацию о курсе можно узнать на сайте: https://unitycodecraft.ru
Телеграм канал: https://t.me/unitycodecraft…
👍16🔥10❤3
Ребята, всем большое спасибо за совместно проведенное время!🔥
Добавил тайм-коды в финальный третий стрим на случай, если появится желание посмотреть/пересмотреть
https://youtube.com/live/lIX9ryGy7mo
Добавил тайм-коды в финальный третий стрим на случай, если появится желание посмотреть/пересмотреть
https://youtube.com/live/lIX9ryGy7mo
YouTube
Динамические Объекты. Атомарный подход (Часть 3)
В третьем открытом уроке рассмотрим динамические поведения игровых объектов. Сделаем подключение механики перемещения и поворота в Run-time. Реализуем временные эффекты яда и заморозки.
Всю информацию о курсе можно узнать на сайте: https://unitycodecraft.ru…
Всю информацию о курсе можно узнать на сайте: https://unitycodecraft.ru…
🔥11❤5🥰2
🎁 А здесь вы сможете ручками пощупать демо-пример на Unity, который делали в видео
GitHub
GitHub - StarKRE/unity-atomic-sample: Пример механик на атомарном подходе на Unity
Пример механик на атомарном подходе на Unity. Contribute to StarKRE/unity-atomic-sample development by creating an account on GitHub.
👍14🔥4🥰1
Всем, привет! 👋
Вчера прошел вводный урок на курсе Unity Gameplay Developer
Познакомились, определили формат обучения, посмотрели архитектуру демо-проекта, зомби-шутера
Благодарю всех, кто пришел. Было круто! 🔥
Если у вас вдруг возникнет желание к нам присоединиться, то можно записаться на курс до конца этой недели, включая воскресенье 😎
Оставляю свои контакты для записи @starkre22 🙂
Вчера прошел вводный урок на курсе Unity Gameplay Developer
Познакомились, определили формат обучения, посмотрели архитектуру демо-проекта, зомби-шутера
Благодарю всех, кто пришел. Было круто! 🔥
Если у вас вдруг возникнет желание к нам присоединиться, то можно записаться на курс до конца этой недели, включая воскресенье 😎
Оставляю свои контакты для записи @starkre22 🙂
unitycodecraft.ru
Full-Stack Unity Developer
Первый курс по разработке игр на атомарном подходе
🔥11👍3❤2😁1
Всем, привет! 👋
Немного решил поделиться материалами с моего прошедшего курса. Поскольку в основе любой архитектуры скорее всего будет фреймворк, то, вот, выложил лекцию по Zenject
Думаю, это будет полезно 👉👈
https://youtu.be/D2lMz9fJ3rQ?si=ucO134Kss_JdBT6t
Немного решил поделиться материалами с моего прошедшего курса. Поскольку в основе любой архитектуры скорее всего будет фреймворк, то, вот, выложил лекцию по Zenject
Думаю, это будет полезно 👉👈
https://youtu.be/D2lMz9fJ3rQ?si=ucO134Kss_JdBT6t
YouTube
Урок по Zenject (20.03.24)
Всем привет! 👋
Решил выложить вебинар по Zenject с моего курса . Надеюсь вам будет полезно. Приятного
просмотра :)
Тайм-коды:
00:00 Подключение
1:20 Введение
2:00 Что такое фреймворк
6:25 План урока
8:30 Повторение
16:00 Что такое Zenject
17:00 Установка…
Решил выложить вебинар по Zenject с моего курса . Надеюсь вам будет полезно. Приятного
просмотра :)
Тайм-коды:
00:00 Подключение
1:20 Введение
2:00 Что такое фреймворк
6:25 План урока
8:30 Повторение
16:00 Что такое Zenject
17:00 Установка…
🔥24👍7🥰3
Всем привет! 👋
В эту субботу будет стрим в 19:00 по МСК
Не могу сдерживать эмоций, потому что это жесть! 🔥🔥🔥
В общем прошло полгода, и я сделал фреймворк для разработки игр на процедурной парадигме, и скорость моей разработки игр выросла в 5 раз 🚀
Если вкратце, то 6 лет я разрабатывал игры с помощью ООП и считал, что это самый лучший и правильный подход... Но оказалось не совсем так)
Сегодня я пришел к тому, что ООП хорош в разработке отдельных компонентов, в которых важна инкапсуляция, но взаимодействие между этими объектами лучше описывать статическими методами, которые получают на вход данные из центрального реестра и выполняют над ними работу. Поскольку в процедурном программировании есть четкое разделение на данные и логику, то разработчик может легко переиспользовать любую процедуру или функцию в другой процедуре, и это существенно уменьшит дублирование кода и самое главное — упростит архитектуру!
В результате этого я полностью отказался от Zenject и DI, потому что это гибче, проще и быстрее)
Поэтому зовите всех знакомых, кто занимается разработкой игр на Unity!
Уверен, что такое должен увидеть каждый разработчик, кто хочет делать игры быстрее и качественнее 💪
-----------------------------------------------
Что будет на стриме? 📺
1. Проблематика ООП
2. Что такое процедурное программирование
3. Разработка персонажа
4. Боевые примеры
5. Выводы
6. Ответы на вопросы
В эту субботу будет стрим в 19:00 по МСК
Не могу сдерживать эмоций, потому что это жесть! 🔥🔥🔥
В общем прошло полгода, и я сделал фреймворк для разработки игр на процедурной парадигме, и скорость моей разработки игр выросла в 5 раз 🚀
Если вкратце, то 6 лет я разрабатывал игры с помощью ООП и считал, что это самый лучший и правильный подход... Но оказалось не совсем так)
Сегодня я пришел к тому, что ООП хорош в разработке отдельных компонентов, в которых важна инкапсуляция, но взаимодействие между этими объектами лучше описывать статическими методами, которые получают на вход данные из центрального реестра и выполняют над ними работу. Поскольку в процедурном программировании есть четкое разделение на данные и логику, то разработчик может легко переиспользовать любую процедуру или функцию в другой процедуре, и это существенно уменьшит дублирование кода и самое главное — упростит архитектуру!
В результате этого я полностью отказался от Zenject и DI, потому что это гибче, проще и быстрее)
Поэтому зовите всех знакомых, кто занимается разработкой игр на Unity!
Уверен, что такое должен увидеть каждый разработчик, кто хочет делать игры быстрее и качественнее 💪
-----------------------------------------------
Что будет на стриме? 📺
1. Проблематика ООП
2. Что такое процедурное программирование
3. Разработка персонажа
4. Боевые примеры
5. Выводы
6. Ответы на вопросы
🔥34🫡4❤2