Это краткая статья по паттернам проектирования в Java. Реализации паттернов не будет, тут только список паттернов которые есть в java и их краткое содержание. Она будет полезна тем, кто уже в теме, для повторения и обобщения. Или напротив, для тех, кто первый раз подошёл к паттернам — для самого первого обзора темы, прежде, чем копнуть глубже.
Паттерны проектирования (шаблоны проектирования) - это готовые к использованию решения часто возникающих в программировании задач. Это не класс и не библиотека, которую можно подключить к проекту, это нечто большее. Паттерны проектирования, подходящий под задачу, реализуется в каждом конкретном случае. Следует, помнить, что такой паттерн, будучи примененным неправильно или к неподходящей задаче, может принести немало проблем. Тем не менее, правильно примененный паттерн поможет решить задачу легко и просто.
Типы паттернов:
- порождающие
- структурные
- поведенческие
- Singleton (Одиночка) - ограничивает создание одного экземпляра класса, обеспечивает доступ к его единственному объекту.
- Factory (Фабрика) - используется, когда у нас есть суперкласс с несколькими подклассами и на основе ввода, нам нужно вернуть один из подкласса.
- Abstract Factory (Абстрактная фабрика) - используем супер фабрику для создания фабрики, затем используем созданную фабрику для создания объектов.
- Builder (Строитель) - используется для создания сложного объекта с использованием простых объектов. Постепенно он создает больший объект от малого и простого объекта.
- Prototype (Прототип) - помогает создать дублированный объект с лучшей производительностью, вместо нового создается возвращаемый клон существующего объекта.
- Adapter (Адаптер) - это конвертер между двумя несовместимыми объектами. Используя паттерн адаптера, мы можем объединить два несовместимых интерфейса.
- Composite (Компоновщик) - использует один класс для представления древовидной структуры.
- Proxy (Заместитель) - представляет функциональность другого класса.
- Flyweight (Легковес) - вместо создания большого количества похожих объектов, объекты используются повторно.
- Facade (Фасад) - беспечивает простой интерфейс для клиента, и клиент использует интерфейс для взаимодействия с системой.
- Bridge (Мост) - делает конкретные классы независимыми от классов реализации интерфейса.
- Decorator (Декоратор) - добавляет новые функциональные возможности существующего объекта без привязки его структуры.
- Template Method (Шаблонный метод) - определяющий основу алгоритма и позволяющий наследникам переопределять некоторые шаги алгоритма, не изменяя его структуру в целом.
- Mediator (Посредник) - предоставляет класс посредника, который обрабатывает все коммуникации между различными классами.
- Chain of Responsibility (Цепочка обязанностей) - позволяет избежать жесткой зависимости отправителя запроса от его получателя, при этом запрос может быть обработан несколькими объектами.
- Observer (Наблюдатель) - позволяет одним обьектам следить и реагировать на события, происходящие в других объектах.
- Strategy (Стратегия) - алгоритм стратегии может быть изменен во время выполнения программы.
- Command (Команда) - интерфейс команды объявляет метод для выполнения определенного действия.
- State (Состояние) - объект может изменять свое поведение в зависимости от его состояния.
- Visitor (Посетитель) - используется для упрощения операций над группировками связанных объектов.
- Interpreter (Интерпретатор) - определяет грамматику простого языка для проблемной области.
- Iterator (Итератор) - последовательно осуществляет доступ к элементам объекта коллекции, не зная его основного представления.
- Memento (Хранитель) - используется для хранения состояния объекта, позже это состояние можно восстановить.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ