Какие шаблоны проектирования используются в Spring framework?
Ответы:
Используется множество различных шаблонов проектирования, но есть несколько очевидных:
Прокси - широко используется в АОП и удаленном взаимодействии .
Синглтон - beans, определенные в файлах конфигурации Spring, по умолчанию являются одиночными.
Шаблонный метод - широко используется для работы с повторяющимся стандартным кодом (например, закрытие соединений и т. Д.). Например, JdbcTemplate , JmsTemplate , JpaTemplate .
Обновите следующие комментарии: Для MVC вы можете прочитать Справочник по MVC
Некоторые очевидные шаблоны, используемые в MVC:
Контроллер представления модели :-). Преимущество Spring MVC в том, что ваши контроллеры являются объектами POJO, а не сервлетами. Это упрощает тестирование контроллеров. Следует отметить, что от контроллера требуется только возвращать имя логического представления, а выбор представления остается за отдельным ViewResolver . Это упрощает повторное использование контроллеров для различных технологий просмотра.
Передний контроллер . Spring предоставляет DispatcherServlet, чтобы гарантировать, что входящий запрос будет отправлен вашим контроллерам.
View Helper - Spring имеет ряд настраиваемых тегов JSP и макросов скорости, помогающих отделить код от представления в представлениях.
Foo
и вы получаете экземпляр для Foo
каждого контекста, вы получите две разные ссылки на объекты. Вместо этого здесь применен шаблон проектирования наилегчайшего веса
На самом деле DI - это своего рода шаблон стратегии. Всякий раз, когда вы хотите иметь возможность обмена какой-либо логикой / реализацией, вы обычно находите интерфейс и соответствующий метод установки в классе хоста, чтобы связать вашу индивидуальную реализацию этого интерфейса.
Шаблон локатора службы - ServiceLocatorFactoryBean хранит информацию обо всех компонентах в контексте. Когда клиентский код запрашивает службу (компонент) по имени, он просто находит этот компонент в контексте и возвращает его. Клиентскому коду не нужно писать код, связанный с Spring, чтобы найти компонент.
Шаблон фабричного метода: BeanFactory для создания экземпляра объекта. Синглтон: тип экземпляра может быть одноэлементным для контекста. Прототип: тип экземпляра может быть прототипом. Шаблон построителя: вы также можете определить метод в классе, который будет отвечать за создание сложного экземпляра.
Контейнер Spring генерирует объекты bean-компонентов в зависимости от области видимости bean-компонентов (singleton, prototype и т. Д.). Это похоже на реализацию паттерна Абстрактная фабрика . Я уверен, что во внутренней реализации Spring каждая область должна быть привязана к определенному классу фабрики.