Ревью 2 теория. Инструкция по созданию бизнесобъектов. Strategy это поведенческий паттерн, выносит набор алгоритмов в собственные классы и делает их взаимозаменимыми
Скачать 0.74 Mb.
|
7.1. Агрегация и композиция в Dependency Injection?Ассоциация — это связь между двумя классами на основе ссылок. Класс Player содержит ссылку уровня класса на класс Asset. Связь может быть представлена линией между этими классами со стрелкой, указывающей направление навигации. Если стрелка находится с обеих сторон, ассоциация имеет двунаправленную навигацию. Зависимость часто путают с ассоциацией. Зависимость обычно создается, когда мы получаем ссылку на класс как часть конкретной операции/метода. Зависимость указывает, что можно вызвать один из API-интерфейсов полученной ссылки на класс, и любая модификация этого класса может нарушить работу класса. Зависимость представлена пунктирной стрелкой, начинающейся от зависимого класса к его зависимости. Множественность обычно не имеет смысла в зависимости. Агрегация аналогична ассоциации и часто рассматривается как избыточная связь. Распространено мнение, что агрегация представляет собой отношения один-ко-многим / многие-ко-многим / часть-целое (т. е. более высокая множественность), которые, конечно, также могут быть представлены через ассоциацию (отсюда и избыточность). Композиция ответственна за создание экземпляра. Когда класс B состоит из класса A, экземпляр класса A владеет созданием или контролирует время жизни экземпляра класса B. Излишне говорить, что, когда экземпляр класса A уничтожается (сборка мусора), экземпляр класса B ждет та же участь. Также считается неправильным представление о том, что композиция реализована как вложенные классы. Композиция связывает время жизни конкретного экземпляра с данным классом, а сам класс может быть доступен другим частям системы. Dependency Injection — это один из способов реализации инверсии контроля (принцип, используемый для уменьшения связанности кода). Композиция — это частный случай ассоциации (это когда классы имеют ссылки друг на друга, так как им необходимо взаимодействовать между собой), при котором какой-то класс является самодостаточным, а другие не могут независимо от него существовать. То есть в общем случае, это термины из разных областей. Но если попытаться их сравнить, то можно заметить, что Dependency Injection построен на агрегации (частный случай ассоциации) - аналогично композиции, но здесь уже класс является самодостаточным и он может быть использован в различных классах. Но самое главное отличие — это их назначение, при Dependency Injection управление жизненным циклом некоего компонента происходит извне этого компонента, а просто композиция нам этого не дает — это лишь тип связи между объектами. 8. Какие Beans будут использоваться для настройки приложения?Чтобы создать класс с конфигурацией на основе Java-кода, нужно аннотировать его с помощью @Configuration. Этот класс будет содержать фабричные методы для создания бинов в контейнере. Эти методы должны быть аннотированы аннотацией @Bean. Аннотация @Configuration, прописанная перед классом, означает, что класс может быть использован контейнером Spring IoC как конфигурационный класс для бинов. Аннотация @Bean, прописанная перед методом, информирует Spring о том, что возвращаемый данным методом объект должен быть зарегистрирован, как бин. Аннотация @ComponentScan("path") задает путь, по которому спринг будет искать классы для создания бинов. 9. Что такое Spring?Spring Framework – это контейнер внедрения зависимостей, с несколькими удобными слоями (например: доступ к базе данных, прокси, аспектно-ориентированное программирование, RPC, веб-инфраструктура MVC). 9.1. Для чего он нужен?Spring обеспечивает решения многих задач, с которыми сталкиваются Java-разработчики и организации, которые хотят создать информационную систему, основанную на платформе Java. Spring не всецело связан с платформой Java Enterprise, несмотря на свою масштабную интеграцию с ней, что является важной причиной его популярности. Spring, вероятно, наиболее известен как источник расширений (features), нужных для эффективной разработки сложных бизнес-приложений вне тяжеловесных программных моделей, которые исторически были доминирующими в промышленности. Еще одно его достоинство в том, что он ввел ранее неиспользуемые функциональные возможности в сегодняшние господствующие методы разработки, даже вне платформы Java. Этот фреймворк предлагает последовательную модель и делает ее применимой к большинству типов приложений, которые уже созданы на основе платформы Java. Считается, что Spring реализует модель разработки, основанную на лучших стандартах индустрии, и делает ее доступной во многих областях Java. |