"Сначала решите проблему. Затем напишите код».

Кодирование — одно из самых приятных занятий, которыми я занимаюсь. Он сочетает логическое мышление с творчеством, и в конце вы создадите что-то, что может сделать вашу жизнь проще или приятнее.

♧ На каком бы уровне вы ни находились, понимание шаблонов проектирования является очень важной частью нашей отрасли. В этой статье я рассмотрю следующие темы:
👉 Шаблоны проектирования (что это такое? / категории / преимущества их использования)
👉 Структурирование вашего проекта
👉 Общие советы

♧ Что такое шаблоны проектирования?
Проще говоря, шаблоны проектирования — это практические решения общих проблем, с которыми инженеры-программисты сталкиваются во время разработки программного обеспечения. Все эти шаблоны похожи на чертежи, которые мы можем использовать и настраивать для решения конкретных проблем в нашем коде. Они действуют как описание или шаблон решения проблемы, который можно использовать во многих различных ситуациях.

Шаблоны проектирования — это формализованные передовые методы, которые программист может использовать для решения общих проблем при разработке приложения или системы.

♧ Преимущества шаблонов проектирования:
✅ Сокращение проблем и ошибок проектирования программирования
✅ Упрощение обслуживания процесса обработки данных
✅ Достижение масштабируемости и многократного использования кода
✅ Более простое обслуживание
✅ Читаемый код

♧ Шаблоны проектирования разделены на 3 категории: творческие 🏗, структурные 📚 и поведенческие 🐅.

›› Шаблоны создания управляют тем, как создаются объекты.

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

›› Структурные шаблоны проектирования — это шаблоны проектирования, которые упрощают проектирование, определяя простой способ реализации взаимосвязей между объектами.

♧ Структура проекта:
Либо по типу, либо по слою, либо по компоненту (функции).

- По типу: интерфейсы в одном месте, перечисления в другом, классы одного типа вместе, исключения вместе, утилиты вместе и так далее.

- По слою: уровень пользовательского интерфейса, уровень сети, уровень базы данных, уровень модели и уровень контроллера.

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

››› Общие советы извлечены из всех шаблонов:

♤ Отделите высокоуровневые политики от низкоуровневых конкретных реализаций.

♤ Код для абстракции (это разрушает тесную связь между двумя классами, позволяя нам разрабатывать их независимо)

♤ Используйте декораторы, дженерики, фабрики, фасад.

♤ Программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для модификации.

♤ Принципы SOLID [Принцип единой ответственности / Принцип открытого-закрытого / Принцип замещения Лисков / Принцип разделения интерфейса / Принцип инверсии зависимостей]

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

››› Выбранный стек технологий повлияет на общую структуру.

📚 Книги и справочники:
- Head First: Design Patterns
- Design Patterns: элементы многоразового объектно-ориентированного программного обеспечения

Ресурсы для более подробного изучения: refactoring.guru