Unity Craft
457 subscribers
14 photos
38 links
Download Telegram
Другие недостатки паттерна, которые я вижу:

1. Нельзя вынести интерфейс и подменить одну реализацию синглтона на другой (нарушение DIP)

2. Паттерн синглтон нарушает SRP, потому что отвечает дополнительно за создание и удаление самого себя. Это может усложнить разработку, если жизненный цикл синглтона не соответствует жизненному циклу программы

3. Использование синглтонов, усложняет тестирование, поскольку классы, использующие синглтоны, имеют неявные зависимости

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

Например, это может быть плагин аналитики, в которую нужно отправлять данные или универсальная аудиосистема, которая отыгрывает звуки, но не EnemySpawner, который используется только для EnemySystem.

Еще обязательным условием использованием синглтона является то, что синглтон должен существовать весь жизненный цикл работы программы, и к нему всегда должен быть доступ.

Таким образом, для работы с бизнес-логикой рекомендую использовать паттерн Dependency Injection (фреймворк Zenject/VContainer). Это даст возможность переиспользовать, тестировать и подменять реализации классов, фокусируясь на решении задач, а не выстраивании архитектуры (рис. 3). А синглтоны использовать только в тех случаях, когда нужно получать универсальный модуль из разных точек программы, и этот "волк" живет все время приложения.
👍13🔥2🥰1
Ребята, всем привет👋
Поздравляю вас с наступающим новым годом и хочу поделиться интересной информацией, которую вы можете глянуть в этом ролике

Вкратце, 20го числа в 19 00 по мск я провожу открытый урок по атомарному подходу, поэтому если вам интересно узнать что-то новое и улучшить свои навыки в программировании, то welcome😎

Помимо этого, я также разработал специальный курс, в котором мы будем разбирать механики и атомарный подход на примере разработанной мной игры - Top-Down Zombie Shooter.
Ссылку на сайт с курсом также прикрепляю
🔥83👍3
Unity Craft pinned «Закрепляю ссылку на стрим по атомарному подходу 🤗 20-го декабря в 19 00 по мск https://www.youtube.com/live/BB8tgIX9AXY?si=JmP7ydYhmto7lL37»
Forwarded from Igor Gulkin
This media is not supported in your browser
VIEW IN TELEGRAM
🔥194👍1😎1
Всем, привет! 👋

Вчера прошел вводный урок на курсе Unity Gameplay Developer
Познакомились, определили формат обучения, посмотрели архитектуру демо-проекта, зомби-шутера
Благодарю всех, кто пришел. Было круто! 🔥

Если у вас вдруг возникнет желание к нам присоединиться, то можно записаться на курс до конца этой недели, включая воскресенье 😎

Оставляю свои контакты для записи @starkre22 🙂
🔥11👍32😁1
Всем, привет! 👋

Немного решил поделиться материалами с моего прошедшего курса. Поскольку в основе любой архитектуры скорее всего будет фреймворк, то, вот, выложил лекцию по Zenject

Думаю, это будет полезно 👉👈

https://youtu.be/D2lMz9fJ3rQ?si=ucO134Kss_JdBT6t
🔥24👍7🥰3
Всем привет! 👋
В эту субботу будет стрим в 19:00 по МСК

Не могу сдерживать эмоций, потому что это жесть! 🔥🔥🔥

В общем прошло полгода, и я сделал фреймворк для разработки игр на процедурной парадигме, и скорость моей разработки игр выросла в 5 раз 🚀

Если вкратце, то 6 лет я разрабатывал игры с помощью ООП и считал, что это самый лучший и правильный подход... Но оказалось не совсем так)

Сегодня я пришел к тому, что ООП хорош в разработке отдельных компонентов, в которых важна инкапсуляция, но взаимодействие между этими объектами лучше описывать статическими методами, которые получают на вход данные из центрального реестра и выполняют над ними работу. Поскольку в процедурном программировании есть четкое разделение на данные и логику, то разработчик может легко переиспользовать любую процедуру или функцию в другой процедуре, и это существенно уменьшит дублирование кода и самое главное — упростит архитектуру!

В результате этого я полностью отказался от Zenject и DI, потому что это гибче, проще и быстрее)

Поэтому зовите всех знакомых, кто занимается разработкой игр на Unity!
Уверен, что такое должен увидеть каждый разработчик, кто хочет делать игры быстрее и качественнее 💪

-----------------------------------------------
Что будет на стриме? 📺

1. Проблематика ООП
2. Что такое процедурное программирование
3. Разработка персонажа
4. Боевые примеры
5. Выводы
6. Ответы на вопросы
🔥34🫡42