Singleton Pattern: это один из лучших способов создания объекта. В этом шаблоне используется один класс, ответственный за создание объекта. Он ограничивает создание экземпляра класса и гарантирует, что для этого конкретного класса создается только один объект. Например: Фабрики используют шаблон Singleton для создания новых учетных записей с идентификаторами в многопоточной среде. Предположим, что если фабрика дважды создает экземпляр в двух разных потоках, то можно иметь 2 перекрывающихся идентификатора для 2 разных учетных записей. Чтобы реализовать этот шаблон, мы должны создать 1) частный конструктор, чтобы ограничить создание экземпляра класса из другого класса. 2) Частная статическая переменная, которая содержит экземпляр класса Singleton. 3) Публичный метод, который возвращает экземпляр класса. Так что любой может иметь доступ к экземпляру.
Фабричный шаблон. Фабричный шаблон используется, когда у нас есть несколько подклассов для суперкласса, и на основе входных данных нам нужно вернуть один из подклассов. Здесь мы создаем объект, не показывая логику клиенту, и обращаемся к вновь созданному объекту, используя общий интерфейс. Суперкласс может быть интерфейсом, классом или абстрактным классом.
Шаблон абстрактной фабрики. Он называется фабрикой фабрик, где суперфабрика создает другие фабрики. Здесь мы определяем интерфейс, класс или абстрактный класс для связанной группы объектов, но без указания конкретных подклассов. Поэтому мы используем абстрактный фабричный класс, чтобы вернуть фабрику классов.
Шаблон Builder: помогает создать сложный (окончательный) объект, используя простые объекты и используя пошаговый подход. Он отделяет построение сложного объекта от его представления. поэтому мы можем использовать один и тот же процесс построения для разных представлений. Пример: предположим, что есть ресторан быстрого питания, если мы хотим создать вегетарианский бургер, нам нужно создать вегетарианский бургер, огонь и прохладительный напиток. мы можем использовать тот же процесс для создания куриного бургера.
Шаблон прототипа: этот шаблон используется, когда создание объекта является дорогостоящим и требует много ресурсов и времени, а у нас уже есть аналогичный объект. Таким образом, шаблон Prototype создает дубликат исходного объекта и модифицирует его в соответствии с нашими потребностями, не забывая при этом о производительности. Для копирования объекта в java мы используем клонирование. Пример: Предположим, у нас есть объект, который загружает данные из базы данных. Теперь, чтобы изменить эти данные несколько раз в нашей программе, сложно загрузить все данные из базы данных, создав объект с использованием нового ключевого слова. Таким образом, используя этот шаблон, мы можем просто клонировать существующий объект и изменять данные.
Шаблон адаптера. Шаблон адаптера действует как мост между двумя несовместимыми интерфейсами. Класс адаптера объединяет функциональные возможности двух несовместимых интерфейсов. Пример: один интерфейс — это мобильная батарея, для зарядки которой требуется 3 вольта, другой интерфейс — это розетка, вырабатывающая 120 вольт. Таким образом, мобильное зарядное устройство является переходником между розеткой и аккумулятором.
Составной шаблон: этот шаблон используется, когда нам нужно представить часть всей иерархии и когда нам нужно рассматривать группу объектов таким же образом, как один объект. Составной шаблон объединяет объекты в древовидную структуру для представления как части, так и всей иерархии. Он создает класс, который содержит группу одинаковых объектов. Этот класс предоставляет способы изменения группы одинаковых объектов. Пример: Предположим, есть рисунок попугая. он состоит из некоторых объектов, таких как треугольник, круг и т. д. предположим, что если мы раскрасим рисунок красным цветом, он применим ко всем объектам на рисунке попугая.
Шаблон прокси. Представляет функциональность другого класса. Он предоставляет заполнитель для исходного объекта для управления доступом к нему. Он защищает исходный объект от внешнего мира, предоставляя доступ к прокси-объекту.
Шаблон легковеса. Этот шаблон используется, когда нам нужно создать много объектов класса, и каждый объект занимает очень много места в памяти. Шаблон Flyweight помогает уменьшить количество объектов за счет повторного использования или совместного использования похожих объектов. если соответствующий объект не найден, он создает новый объект.
Шаблон фасада. Шаблон фасада предоставляет унифицированный интерфейс для набора интерфейсов в подсистеме. Он скрывает сложности подсистем от клиента, предоставляя доступ к единому интерфейсу. Пример: работа на золотом руднике, в мире только шахтеры идут вниз и копают золото. но внутренне они много работают, чтобы получить золото. Поэтому они скрывают сложность от внешнего мира.
Шаблон моста. Этот шаблон применим, когда существуют иерархии интерфейсов как в интерфейсах, так и в реализациях. Таким образом, шаблон моста используется для отделения интерфейсов от его реализации, так что оба могут изменяться независимо друг от друга.
Шаблон декоратора. Шаблон декоратора позволяет пользователю динамически добавлять новые функции к существующему объекту без изменения структуры. Он динамически изменяет поведение объекта, не затрагивая другие объекты.
Шаблон шаблона: он определяет шаги для выполнения алгоритма и позволяет его подклассам переопределять некоторые шаги алгоритма без изменения структуры.
Шаблон посредника. Шаблон посредника используется для уменьшения сложности связи за счет предоставления централизованной среды связи между различными классами или объектами. Класс посредника обрабатывает всю коммуникацию между различными объектами, а также помогает реализовать слабую связь. Пример. Комната управления воздушным движением является посредником для связи между различными рейсами.
Шаблон цепочки ответственности. Этот шаблон создает цепочку объектов-получателей для запроса. Каждый объект получателя будет иметь ссылку на другой объект. Поэтому, когда клиент отправляет запрос, запрос будет отправлен в цепочку объектов. Объекты сами решат, кто может обработать запрос. если один объект не может обработать запрос, то он будет отправлен другому. Пример: предположим, что в классе есть блоки try и несколько блоков catch. когда в блоке try возникает какое-либо исключение, оно отправляется в первый блок catch для обработки. если блок catch не может обработать запрос, то он отправляется в другой блок catch и так далее. если последний блок catch не может обработать запрос, то он генерирует исключение вне программы.
Шаблон наблюдателя. Этот шаблон используется, когда между объектами существует отношение один ко многим, поэтому при изменении состояния одного объекта его зависимые объекты уведомляются и обновляются автоматически.
Шаблон стратегии. Шаблон стратегии используется, когда у нас есть несколько алгоритмов для конкретной задачи, и клиент решает, как реализовать их во время выполнения.
Шаблон команды. В этом шаблоне запрос клиента помещается в объект и отправляется как команда вызывающему объекту. Объект-вызывающий будет сканировать объект, который может обработать команду, и передать команду, и объект выполнит ее. Пример: Официант в ресторане принимает заказ от клиента и отправляет запрос соответствующему повару, где повар обрабатывает запрос.
Шаблон состояния. В шаблоне состояния поведение класса изменяется в зависимости от его внутреннего состояния.
Шаблон посетителя. Шаблон посетителя используется для выполнения операции над элементами структуры объекта без изменения классов, с которыми он работает.
Шаблон интерпретатора. Он определяет представление грамматики данного языка вместе с интерпретатором. Интерпретатор использует представление для интерпретации текста на языке. Пример: компилятор Java интерпретирует исходный код и преобразует его в байтовый код, понятный JVM.
Шаблон итератора. Этот шаблон используется для последовательного доступа к элементам объекта коллекции без необходимости знать его базовое представление.
Шаблон Memento: шаблон Memento сохраняет внутреннее состояние объекта и при необходимости восстанавливает его до предыдущего состояния.
Шаблон MVC: онразделяет интерфейс использования на три компонента. Модель содержит логику приложения. Представление представляет данные, присутствующие в модели. Контроллер управляет потоком данных между моделью и представлением. всякий раз, когда в данных происходят изменения, он соответствующим образом обновляет представление.
Шаблон бизнес-делегата. Этот шаблон добавляет уровень абстракции между бизнес-уровнем и уровнем представления.