"Сначала решите проблему. Затем напишите код».
Кодирование — одно из самых приятных занятий, которыми я занимаюсь. Он сочетает логическое мышление с творчеством, и в конце вы создадите что-то, что может сделать вашу жизнь проще или приятнее.
♧ На каком бы уровне вы ни находились, понимание шаблонов проектирования является очень важной частью нашей отрасли. В этой статье я рассмотрю следующие темы:
👉 Шаблоны проектирования (что это такое? / категории / преимущества их использования)
👉 Структурирование вашего проекта
👉 Общие советы
♧ Что такое шаблоны проектирования?
Проще говоря, шаблоны проектирования — это практические решения общих проблем, с которыми инженеры-программисты сталкиваются во время разработки программного обеспечения. Все эти шаблоны похожи на чертежи, которые мы можем использовать и настраивать для решения конкретных проблем в нашем коде. Они действуют как описание или шаблон решения проблемы, который можно использовать во многих различных ситуациях.
Шаблоны проектирования — это формализованные передовые методы, которые программист может использовать для решения общих проблем при разработке приложения или системы.
♧ Преимущества шаблонов проектирования:
✅ Сокращение проблем и ошибок проектирования программирования
✅ Упрощение обслуживания процесса обработки данных
✅ Достижение масштабируемости и многократного использования кода
✅ Более простое обслуживание
✅ Читаемый код
♧ Шаблоны проектирования разделены на 3 категории: творческие 🏗, структурные 📚 и поведенческие 🐅.
›› Шаблоны создания управляют тем, как создаются объекты.
›› Шаблоны поведения управляют тем, как взаимодействуют объекты. Это взаимодействие включает в себя общение друг с другом, зависимость друг от друга, изоляцию друг от друга, чтобы быть гибкими, поддерживаемыми и тестируемыми.
›› Структурные шаблоны проектирования — это шаблоны проектирования, которые упрощают проектирование, определяя простой способ реализации взаимосвязей между объектами.
♧ Структура проекта:
Либо по типу, либо по слою, либо по компоненту (функции).
- По типу: интерфейсы в одном месте, перечисления в другом, классы одного типа вместе, исключения вместе, утилиты вместе и так далее.
- По слою: уровень пользовательского интерфейса, уровень сети, уровень базы данных, уровень модели и уровень контроллера.
- По функциям: дизайн, управляемый доменом, хотя это популярный дизайн, но, на мой взгляд, очень сложный, каждая функция находится в своем собственном пакете и построена изолированно.
››› Общие советы извлечены из всех шаблонов:
♤ Отделите высокоуровневые политики от низкоуровневых конкретных реализаций.
♤ Код для абстракции (это разрушает тесную связь между двумя классами, позволяя нам разрабатывать их независимо)
♤ Используйте декораторы, дженерики, фабрики, фасад.
♤ Программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для модификации.
♤ Принципы SOLID [Принцип единой ответственности / Принцип открытого-закрытого / Принцип замещения Лисков / Принцип разделения интерфейса / Принцип инверсии зависимостей]
››› Фреймворки помогут вам избежать некоторых из этих деталей, кроме того, большинство современных фреймворков хорошо используют шаблоны проектирования в своих основных функциях.
››› Выбранный стек технологий повлияет на общую структуру.
📚 Книги и справочники:
- Head First: Design Patterns
- Design Patterns: элементы многоразового объектно-ориентированного программного обеспечения
Ресурсы для более подробного изучения: refactoring.guru