Паттерн Proxy широко используется в AOP и remoting. Singleton (Одиночка) Паттерн Singleton гарантирует, что в памяти будет существовать только один экземпляр объекта, который будет предоставлять сервисы. В Spring область видимости бина (scope) по умолчанию равна singleton и IoC-контейнер создаёт ровно один экземпляр объекта на Spring IoC-контейнер. Factory (Фабрика) Этот паттерн позволяет инициализировать объект через публичный статический метод, называемый фабричным методом. Spring использует паттерн Factory для создания объекта бина с использованием следующих двух подходов. BeanFactory ApplicationContext Template (Шаблон) Этот паттерн широко используется для работы с повторяющимся бойлерплейт кодом (таким как, закрытие соединений и т. п.). Например, JdbcTemplate, JmsTemplate, JpaTemplate Model View Controller (Модель-Представление-Контроллер) Преимущество Spring MVC в том, что ваши контроллеры являются POJO, а не сервлетами. Это облегчает тестирование контроллеров. Front Controller (Контроллер запросов) Spring предоставляет DispatcherServlet, чтобы гарантировать, что входящий запрос будет отправлен вашим контроллерам. View Helper (Вспомогательный компонент представления) View Helper отделяет статическое содержимое в представлении, такое как JSP, от обработки бизнес-логики. Dependency injection и inversion of control (IOC) (Внедрение зависимостей и инверсия управления) IoC-контейнер в Spring, отвечает за создание объекта, связывание объектов вместе, конфигурирование объектов и обработку всего их жизненного цикла от создания до полного уничтожения. Service Locator (Локатор служб) ServiceLocatorFactoryBean сохраняет информацию обо всех бинах в контексте. Когда клиентский код запрашивает сервис (бин) по имени, он просто находит этот компонент в контексте и возвращает его. Клиентскому коду не нужно писать код, связанный со Spring, чтобы найти бин. Observer-Observable (Наблюдатель) Используется в механизме событий ApplicationContext. Context Object (Контекстный объект) Паттерн Context Object, инкапсулирует системные данные в объекте-контексте для совместного использования другими частями приложения без привязки приложения к конкретному протоколу. ApplicationContext является центральным интерфейсом в приложении Spring для предоставления информации о конфигурации приложения. Abstract Factory (Абстрактная фабрика) В основе интерфейса FactoryBean из фреймворка Spring лежит паттерн проектирования Abstract Factory. Spring предоставляет множество реализаций данного интерфейса, например ProxyFactoryBean, JndiFactoryBean, LocalSessionFactoryBean, LocalContainerEntityManagerFactoryBean и т. д. Builder (Строитель) Фреймворк Spring прозрачным образом реализует паттерн проектирования Builder для некоторых функциональностей. В Spring на паттерне проектирования Builder основаны следующие классы: EmbeddedDatabaseBuilder; AuthenticationManagerBuilder; UriComponentsBuilder; BeanDefinitionBuilder; MockMvcWebClientBuilder. Object Pool (Пул объектов) Spring реализует паттерн Object Pool для предоставления приложению источника данных наиболее эффективным способом. Суть паттерна определяется так: создание объектов требует больших затрат, чем переиспользование. Spring позволяет реализовать паттерн Object Pool для переиспользования объекта DataSource в приложении. Data Access Object (Объект доступа к данным) В Spring JDBC DAO — обобщенный объект для доступа к данным с бизнес-уровня, предоставляющий согласованный интерфейс для сервисов бизнес-уровня. Основная задача классов DAO состоит в абстрагировании нижележащей логики доступа к данным от сервисов на бизнес-уровне. Strategy (Стратегия) Поведенческий паттерн проектирования, который определяет семейство схожих алгоритмов и помещает каждый из них в собственный класс, после чего алгоритмы можно взаимозаменять прямо во время исполнения программы. В Spring реализован множеством классов, наименование которых оканчивается словом "Strategy", например: AbstractVersionStrategy, BasicLookupStrategy, CachingNamingStrategy, ContentVersionStrategy и т.д.. |