Точка входа в программирование
21.4K subscribers
903 photos
163 videos
1 file
2.45K links
Фундаментальные знания по основам программирования

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Сайт: https://tprg.ru/site

Регистрация в перечне РКН: https://tprg.ru/zrgj
Download Telegram
Паттерны проектирования

Чтобы избежать возможных проблем в архитектуре программ, разработчики придумали паттерны проектирования — концепции решения тех или иных проблем.

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

Делимся ресурсом, где подробно описаны все популярные паттерны проектирования:

https://tprg.ru/PqI3

#паттерны
Что почитать: «Head First. Паттерны проектирования»

Программисты нередко решают одинаковые задачи и приходят к схожим решениям. Чтобы не реализовывать с нуля ту или иную функциональность, разработчики прибегают к готовым паттернам (шаблонам) проектирования.

Мы недавно уже рассказывали о ресурсе, на котором собраны популярные паттерны. Сегодня хотим порекомендовать книгу «Паттерны проектирования» из серии Head First.

Как и другие книги из серии, «Паттерны проектирования» непохожа на стандартный скучный учебник по программированию. Книга написана очень простым языком и содержит большое количество иллюстраций и подробных заметок по коду.

#паттерны #книги
Шаблоны проектирования простым языком

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

Серия статей познакомит с различными шаблонами:

1. Порождающие паттерны.
2. Структурные паттерны.
3. Поведенческие паттерны.

Кстати, все материалы по шаблонам проектирования вы можете найти по тегу #паттерны
Лекция по шаблонам проектирования и SOLID-принципам на C++

В первой части лекции объясняется, как применять шаблоны проектирования в виде базовых блоков архитектуры приложения на C++. Во второй части лектор демонстрирует практическое использование паттерна «Наблюдатель» (Observer):

https://youtu.be/ZLg13pHjbsk

#cpp #паттерны
Умеете ли вы использовать паттерны проектирования в JavaScript?

Паттерны (или шаблоны) проектирования представляют собой готовые «рецепты», которые помогают программисту решать типовые задачи.

Всего за одно видео вы познакомитесь с 17 паттернами и их примерами реализации на JavaScript:

https://youtu.be/YJVj4XNASDk

#js #веб #паттерны
Паттерны проектирования на C#

Из серии видео вы узнаете принципы популярных паттернов проектирования и их примеры реализации на .NET 6 в Visual Studio 2022:

1. Паттерн «Заместитель» (Proxy).
2. Паттерн «Стратегия» (Strategy).
3. Паттерн «Фабричный метод» (Factory method).
4. Паттерн «Строитель» (Builder).

#паттерны #csharp
Бесплатный курс по паттернам и практикам написания кода

Делимся видеокурсом от команды AvitoTech, где ребята рассказали:
— как улучшить качество кода;
— как работать с исключениями;
— про полезные архитектуры и шаблоны проектирования.

Курс преподавался в Московском авиационном институте (МАИ) и будет полезен как начинающим, так и более опытным разработчикам.

Все видео курса доступны в плейлисте на YouTube.

#курсы #паттерны
Паттерн проектирования «Декоратор» и его реализация на Java

Структурный паттерн «Декоратор» (Decorator) позволяет динамически добавлять объектам новую функциональность, и при этом не затрагиваются объекты этого же класса.

Подробнее узнать о паттерне и его возможной реализации на Java можно в статье:

https://javarush.ru/groups/posts/3833-pattern-proektirovanija-dekorator-s-primerami

#java #паттерны
Паттерн Сага: что это такое?

Многие сервисы используют собственные БД. Например, в крупных онлайн-магазинах «заказы», «пользователи» и «оплата» могут быть различными базами данных. Как же проверить прошла ли транзакция успешно или нет в таких случаях?

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

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

Подробнее: https://tprg.ru/0aXE

#паттерны
Паттерн Type Erasure или нестандартный полиморфизм

Type Erasure (Стирание типов) — современный паттерн, который позволяет избавиться от зависимостей и указателей при правильном применении в приложение. Как и другие паттерны, Type Erasure делает код более читаемым и улучшает производительность.

О том, как использовать данный паттерн в проекте — в статье:

https://habr.com/ru/post/706450/

#паттерны
Универсальные шпаргалки по паттернам проектирования

Сохраняйте подборку 23 коротких шпаргалок по паттернам проектирования GoF. В каждой — универсальная схема и очень краткое описание. Отлично подойдёт для зарисовки, распечатки или поверхностного изучения. Все картинки не прикрепляются, поэтому полный список можно найти в статье.

#подборка #шпаргалка #паттерны #ru
Forwarded from Zen of Python
Простыми словами: Паттерн «Одиночка»

Про «Фасад» поговорили. Теперь расскажу про другой популярный паттерн.

«Одиночка» (Singleton) полезен, когда необходимо гарантировать существование единственного экземпляра объекта в системе. Но использовать его следует с осторожностью. Хотя он полезен для управления ресурсами и обеспечения согласованности данных, это может привести к сложностям при тестировании и многопоточности. Каждое использование Singleton должно быть тщательно обосновано, чтобы избежать потенциальных проблем и антипаттернов.

#простымисловами #паттерны
Гайд по реализации паттерна Composite в Kotlin с sealed-классами и корутинами

Composite — это как универсальный интерфейс, который позволяет обращаться с составными и одиночными объектами одинаково. Вместо тысячи if-else можно получить довольно стройную иерархию, где всё просто: композиты содержат другие компоненты, а листья выполняют конкретную работу.

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

https://habr.com/ru/companies/otus/articles/859176/

#kotlin #паттерны
Точка входа в программирование
Простыми словами: Паттерн «Одиночка» Про «Фасад» поговорили. Теперь расскажу про другой популярный паттерн. «Одиночка» (Singleton) полезен, когда необходимо гарантировать существование единственного экземпляра объекта в системе. Но использовать его следует…
Простыми словами Паттерн «Factory Method»

Продолжаем тему паттернов. Паттерн Factory Method упрощает создание различных объектов, избегая прямой зависимости от их классов. Он особенно полезен, когда вы работаете с семействами похожих объектов, которые могут изменяться или добавляться. Это повышает гибкость и делает проект более масштабируемым.

Подробнее о нём можно узнать в карточках.

#простымисловами #паттерны
#простымисловами: ​​Различия между MVC, MVP, MVVM, MVVM-C, и VIPER

Эти архитектурные паттерны являются одними из наиболее часто используемых при разработке приложений, как на платформах iOS, так и Android.

MVC (Model-View-Controller) — один из самых широко используемых архитектурных шаблонов. Он разделяет приложение на три основных компонента: модель (представляет данные и бизнес-логику), представление (отвечает за отображение интерфейса) и контроллер (действует как посредник между моделью и представлением).

MVP (Model-View-Presenter) отчасти похож на MVC, но имеет немного другой подход. В MVP посредником между моделью и представлением является презентер , а не контроллер. Презентер отвечает за обновление представления данными из модели и обработку пользовательского ввода и событий.

MVVM (Model-View-ViewModel) — архитектурный шаблон, набирающий популярность и используемый в приложениях со сложными пользовательскими интерфейсами. Он похож на MVP, но с добавлением модели представления (view model), которая отвечает за управление состоянием представления и за предоставление данных из модели в представление.

MVVM-C (Model-View-ViewModel-Coordinator) — это вариация MVVM, с добавлением координатора, который отвечает за управление навигацией между различными экранами или представлениями в приложении. Этот шаблон полезен для приложений, в которых есть несколько управляемых экранов или представлений.

VIPER (View-Interactor-Presenter-Entity-Router) — относительно новая архитектурный шаблон, который похож на MVC, но с добавлением нескольких новых компонентов, включая интерактор (отвечает за обработку бизнес-логики), сущность (представляет данные) и маршрутизатор (обрабатывает навигацию между различными экранами и представлениями).

#паттерны
Упаковка булевых значений в битах

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

В этой статье подробно разобран принцип работы этого паттерн на примере работы с юнитами.

#паттерны #gamedev #cpp