Принцип разделения интерфейса — SOLID деталях

Четвёртый принцип SOLID — принцип разделения интерфейса (Interface Segregation Principle, ISP), и гласит он следующим образом: «Программные сущности не должны зависеть от методов, которые они не используют». Однако с течением времени данный принцип стал применим не только к интерфейсам, но и к другим аспектам разработки программного обеспечения, что отражено в книге Роберта Мартина «Читая Архитектура»: «Этот принцип призывает разработчиков программного обеспечения избегать зависимости от всего, что не используется». Предлагаю сначала разобраться с интерфейсами, а затем рассмотреть несколько примеров более широкого применения принципа.

Читать далее Принцип разделения интерфейса — SOLID деталях

Принцип инверсии зависимости — SOLID в деталях

Пятым и последним принципом в списке принципов SOLID является принцип инверсии зависимости (Dependency Inversion Principle; DIP), который Роберт Мартин в книге «Чистая архитектура» формулирует следующим образом: «Код, реализующий высокоуровневую политику, не должен зависеть от кода, реализующего низкоуровневые детали. Напротив, детали должны зависеть от политики«.

Читать далее Принцип инверсии зависимости — SOLID в деталях

Шаблонный метод — шаблоны проектирования в деталях

Шаблонный метод — это популярный поведенческий шаблон проектирования. При его помощи можно задать некоторое поведение в методе абстрактного класса, но при этом оставить детали реализации на классы-наследники. Проще говоря, в контексте языка программирования Java шаблонный метод — это метод абстрактного класса или метод по умолчанию интерфейса, задающий общее поведение, но опирающийся на другие абстрактные методы. Шаблонный метод наряду с шаблоном проектирования «Стратегия» часто применяется при реализации инверсии управления.

Читать далее Шаблонный метод — шаблоны проектирования в деталях

Инверсия управления

Одним из наиболее значимых принципов объектно-ориентированного программирования является инверсия управления или принцип инверсии управления. Так же этот принцип в шутку назван «Голливудским принципом», смысл которого раскрывается в определении: «Не звоните нам, мы сами вам позвоним». Данный принцип позволяет существенно снизить связанность между компонентами программного обеспечения, а также изменить процесс его разработки таким образом, чтобы сторонние фреймворки могли использовать компоненты, разрабатываемые другими разработчиками.

Читать далее Инверсия управления

Внедрение и поиск зависимостей

Прежде чем браться за материалы, посвящённые Spring Framework, мне хотелось бы повторить тему инверсии управления, так как этот принцип и его реализации в виде внедрения и поиска зависимостей являются важной составляющей ядра Spring Framework.

Под инверсией управления понимается подход к написанию кода, при котором элементы кода получают поток управления неявно от некоторого фреймворка. Иными словами, если сравнивать с традиционным процедурным программированием, не код обращается к фреймворку или библиотекам для выполнения какого-либо действия, а наоборот, фреймворк обращается к нашему коду.

Читать далее Внедрение и поиск зависимостей

Шаблон проектирования декоратор

Во второй статье цикла, посвящённого шаблонам проектирования, я хотел бы поговорить про шаблон проектирования «декоратор», который я частенько путаю с шаблоном «адаптер». О последнем, кстати, я подробно рассказывал в предыдущей статье. Впрочем, оба шаблона проектирования делят одно альтернативное название — «обёртка» (Wrapper).

Читать далее Шаблон проектирования декоратор

Шаблон проектирования адаптер

При написании материалов я так или иначе касаюсь темы шаблонов проектирования, однако я обратил своё внимание на то, что нередко путаюсь в их названиях. Поэтому я решил перечитать книгу «банды четырёх», а заодно написать цикл материалов по шаблонам проектирования с примерами кода на языке программирования Java.

Открывает цикл материалов статья о шаблоне проектирования «адаптер». Адаптер, так же известный как «обёртка» (wrapper), применяется в тех случаях, когда некоторый существующий класс необходимо адаптировать под использование с другим целевым интерфейсом без внесения изменений в адаптируемый класс, дабы не нарушать принцип открытости/закрытости.

Читать далее Шаблон проектирования адаптер

SOLID в деталях: Принцип открытости/закрытости (Видео)

В серии роликов «SOLID в деталях» я постараюсь подробно рассказать о принципах SOLID, а так же продемонстрировать их практическое применение.

Второй ролик посвящён принципу открытости/закрытости.

SOLID в деталях: Принцип подстановки Лисков

Третьим принципом в списке SOLID является Принцип подстановки Лисков (Liskov Substitution Principle; LSP), который из всех принципов имеет самую сложную формулировку, звучащую следующим образом:

Пусть q(x) является свойством, верным относительно объектов x некоторого типа T. Тогда q(y) также должно быть верным для объектов y типа S, где S является подтипом типа T.

Барбара Лисков
Читать далее SOLID в деталях: Принцип подстановки Лисков

SOLID в деталях: Принцип единственной ответственности (Видео)

В серии роликов «SOLID в деталях» я постараюсь подробно рассказать о принципах SOLID, а так же продемонстрировать их практическое применение.

В первом ролике речь пойдёт о принципе единственной ответственности (Single Responsibility Principle; SRP), его трактовках и их практическом применении.

Видео можно посмотреть на следующих платформах:

Текстовая версия видео