Очереди сообщений — это очень большая тема, которую невозможно охватить парой статьей или роликов. Отчасти это связано с тем, что в настоящее время существует большое количество систем обмена сообщениями, реализующих схожие механизмы, но делающих это по-разному. В этой статье я хочу попытаться в общих чертах рассказать о том, что такое очереди сообщений, брокеры очередей сообщений, потоки (стримы), а также о том, зачем они нужны. В последующих статьях я постараюсь более предметно рассказать о конкретных реализациях очередей сообщений и их практическом применении.
Читать далее Про очереди сообщенийРубрика: Архитектура
Принцип разделения интерфейса — 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), который из всех принципов имеет самую сложную формулировку, звучащую следующим образом:
Читать далее SOLID в деталях: Принцип подстановки ЛисковПусть q(x) является свойством, верным относительно объектов x некоторого типа T. Тогда q(y) также должно быть верным для объектов y типа S, где S является подтипом типа T.
Барбара Лисков