Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РИС шпоры для печати.docx
Скачиваний:
29
Добавлен:
31.05.2022
Размер:
1.01 Mб
Скачать

Принципы solid в Java

SOLID — это акроним, образованный из заглавных букв первых пяти принципов ООП и проектирования. Принципы придумал Роберт Мартин в начале двухтысячных, а аббревиатуру позже ввел в обиход Майкл Фэзерс.

Вот что входит в принципы SOLID:

  1. Single Responsibility Principle (Принцип единственной ответственности).

Принцип единой ответственности означает, что один класс или файл должен иметь только одну цель и одно единственное назначение.

  1. Open Closed Principle (Принцип открытости/закрытости).

Принцип открытости/закрытости означает, что программные сущности(классы, интерфейсы и т. д.) должны быть открыты для расширения, но закрыты для модификации.

  1. Liskov’s Substitution Principle (Принцип подстановки Барбары Лисков).

Принцип гласит, что поведение методов в дочернем классе должно следовать принципам базового класса, а не изменять их.

  1. Interface Segregation Principle (Принцип разделения интерфейса).

Лучше создавать много отдельных узкоспециализированных интерфейсов, чем один, который включает в себя много функций. Это позволит сделать архитектуру более гибкой, и позволит использовать интерфейсы по отдельности.

  1. Dependency Inversion Principle (Принцип инверсии зависимостей).

Модули верхних уровней не должны зависеть от модулей нижних уровней.

Принцип декларирует, что модули верхних уровней не должны зависеть от модулей нижних уровней, а оба типа модулей должны зависеть от абстракций; сами абстракции не должны зависеть от деталей, а вот детали должны зависеть от абстракций.

Существует три основных типа внедрения зависимостей:

  1. constructor injection: все зависимости передаются через конструктор класса.

  2. setter injection: разработчик добавляет setter-метод, с помощью которого инжектор внедряет зависимость

  3. interface injection: зависимость предоставляет инжектору метод, с помощью которого инжектор передаст зависимость. Разработчики должны реализовать интерфейс, предоставляющий setter-метод, который принимает зависимости

Dependency Injection (внедрение зависимостей) – ключевой шаблон проектирования в Spring. Мы говорим фреймворку создать за нас бины (иначе говоря — объекты) и внедрить их в другие бины. И фреймворк это делает.

Бин — объект класса, представляющий собой завершенный программный элемент с определенной бизнес-функцией либо внутренней функцией Spring'а, жизненным циклом которого управляет контейнер бинов.

@Component

public class Shop {

}

@Component

public class Seller {

@Autowired

private Shop shop;

}

Аннотация Component сказала спрингу, что класс, который ей аннотируем, это бин. Аннотация Autowired попросила Spring в поле, которое она аннотирует, подставить значение. Эта операция называется «инжектнуть» (inject).

39. Spring Framework аоп (Aspect Oriented Programming или aop) . Основные понятия aop. Назначение и использование. Примеры лиза

Аспектно-ориентированный (AOP)Spring поставляется с богатой поддержкой аспектно-ориентированного программирования (AOP), что делает возможным взаимосвязанную разработку, отделяя бизнес-логику приложения от системных сервисов (таких как аудит и управление транзакциями). Объекты приложения делают то, что должны делать – выполняют прикладную логику – и ничего больше. Они не отвечают за другие системные вопросы (или даже не осведомлены о них), такие как регистрация событий (logging) или поддержка транзакций.

в АОП единицей модульности является аспект. Внедрение зависимостей помогает вам отделить ваши прикладные объекты друг от друга, в то время как AOP помогает вам отделить сквозные задачи от объектов, на которые они влияют. AOP подобен триггерам в таких языках программирования, как Perl, .NET, Java и других.

Модуль Spring AOP позволяет перехватчикам перехватывать приложение. Например, когда метод выполняется, вы можете добавить дополнительные функции до или после выполнения метода.

Данный модуль работает как базис при разработке ваших собственных аспектов в приложении, построенном с использованием Spring. Как и DI, AOP содействует слабой связанности объектов приложения. Однако с помощью AOP аспекты приложения (такие как транзакции и безопасность) отделяются от объектов, к которым они применяются. AOP module в Spring предоставляет несколько подходов в построении аспектов, включая создание аспектов, основанных на интерфейсах AOP Alliance и поддержку AspectJ.