Введение в проектирование паттернов
Шаблон проектирования обеспечивает общее многократно используемое решение общих проблем, возникающих при разработке программного обеспечения. Шаблон обычно показывает отношения и взаимодействия между классами или объектами. Идея состоит в том, чтобы ускорить процесс разработки, предоставив проверенные и проверенные парадигмы разработки/дизайна. Шаблоны проектирования — это независимые от языка программирования стратегии решения общей проблемы. Это означает, что шаблон проектирования представляет собой идею, а не конкретную реализацию. Используя шаблоны проектирования, вы можете сделать свой код более гибким, пригодным для повторного использования и обслуживания.
Не обязательно всегда внедрять шаблоны проектирования в свой проект. Шаблоны проектирования не предназначены для разработки проектов. Шаблоны проектирования предназначены для общего решения проблем. Всякий раз, когда возникает необходимость, вы должны реализовать подходящий шаблон, чтобы избежать подобных проблем в будущем. Чтобы выяснить, какой шаблон использовать, вам просто нужно попытаться понять шаблоны проектирования и их назначение. Только так вы сможете выбрать правильный.
Цель:
Поймите цель и использование каждого шаблона проектирования, чтобы выбрать и реализовать правильный шаблон по мере необходимости.
Пример:
Во многих реальных ситуациях мы хотим создать только один экземпляр класса. Например, в любой момент времени в стране может быть только один действующий президент. Этот шаблон называется шаблоном Singleton. Другими примерами программного обеспечения могут быть одно подключение к БД, совместно используемое несколькими объектами, поскольку создание отдельного подключения к БД для каждого объекта является дорогостоящим. Точно так же в приложении может быть один диспетчер конфигурации или диспетчер ошибок, который обрабатывает все проблемы вместо создания нескольких диспетчеров.
Типы шаблонов проектирования
В основном существует три типа шаблонов проектирования:
- творческий
Все эти шаблоны проектирования касаются создания экземпляров классов или объектов. Эти шаблоны можно далее разделить на шаблоны создания классов и шаблоны создания объектов. В то время как шаблоны создания классов эффективно используют наследование в процессе создания экземпляров, шаблоны создания объектов эффективно используют делегирование для выполнения работы.Порождающие шаблоны проектирования — это фабричный метод, абстрактная фабрика, построитель, синглтон, пул объектов и прототип.
Вариант использования творческого шаблона проектирования -
1) Предположим, разработчик хочет создать простой класс DBConnection для подключения к базе данных и хочет получить доступ к базе данных в нескольких местах из кода, обычно разработчик создает экземпляр класса DBConnection и использует его для выполнения операций с базой данных где угодно. требуется. Это приводит к созданию нескольких подключений к базе данных, поскольку каждый экземпляр класса DBConnection будет иметь отдельное подключение к базе данных. Чтобы справиться с этим, мы создаем класс DBConnection как одноэлементный класс, так что создается только один экземпляр DBConnection и устанавливается одно соединение. Поскольку мы можем управлять подключением к БД через один экземпляр, мы можем контролировать баланс нагрузки, ненужные подключения и т. д.2) Предположим, вы хотите создать несколько экземпляров подобного типа и хотите добиться слабой связи, тогда вы можете перейти к шаблону Factory. Класс, реализующий шаблон проектирования factory, работает как мост между несколькими классами. Рассмотрим пример использования нескольких серверов баз данных, таких как SQL Server и Oracle. Если вы разрабатываете приложение, использующее базу данных SQL Server в качестве серверной части, но в будущем вам потребуется изменить базу данных на оракул, вам потребуется изменить весь свой код, чтобы фабричные шаблоны проектирования сохраняли слабую связь и простую реализацию, мы должны перейти к фабричному шаблону проектирования, чтобы добиться слабой связи и создания объекта подобного типа.
- Структурный
Эти шаблоны проектирования предназначены для организации различных классов и объектов для формирования более крупных структур и предоставления новых функций.Шаблоны структурного проектирования — это адаптер, мост, составной элемент, декоратор, фасад, легковес, данные частного класса и прокси.
Вариант использования шаблона структурного проектирования-
1) Когда 2 интерфейса несовместимы друг с другом и хотят установить связь между ними через адаптер, это называется шаблоном проектирования адаптера. Шаблон адаптера преобразует интерфейс класса в другой интерфейс или класс, который ожидает клиент, т. е. адаптер позволяет классам работать вместе, что иначе было бы невозможно из-за несовместимости. поэтому в таких несовместимых сценариях мы можем использовать шаблон адаптера.
- Поведенческий
Поведенческие паттерны связаны с выявлением общих коммуникативных паттернов между объектами и реализацией этих паттернов.Поведенческие паттерны : Цепочка ответственности, Команда, Интерпретатор, Итератор, Посредник, Сувенир, Нулевой объект, Наблюдатель, Состояние, Стратегия, Метод шаблона, Посетитель.
Пример использования шаблона поведенческого дизайна-
1) Шаблон шаблона определяет скелет алгоритма в операции, откладывая некоторые шаги на подклассы. Шаблонный метод позволяет подклассам переопределять определенные шаги алгоритма без изменения структуры алгоритма. Например, в вашем проекте вы хотите, чтобы поведение модуля можно было расширять, чтобы мы могли заставить модуль вести себя по-новому и по-разному по мере изменения требований приложения или для удовлетворения потребностей новых приложений. Однако никому не разрешено вносить в него изменения исходного кода, т. е. вы можете добавлять, но не можете изменять структуру в тех сценариях, в которых разработчик может использовать шаблон проектирования шаблона.
Использованная литература:
https://sourcemaking.com/design_patterns
https://sourcemaking.com/design_patterns/singleton
Эта статья написана Абхиджитом Саха и Тануджей Прахараджем . Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.