Принципы Чистой Архитектуры на примерах: простым языком

Posted by

Clean Architecture на примере

Введение в Clean Architecture

Clean Architecture (чистая архитектура) – это подход к разработке ПО, который ставит акцент на чистоте и ясности структуры приложения. Он помогает создавать гибкие и легко поддерживаемые системы, которые легко масштабировать и тестировать.

Преимущества Clean Architecture

  • Отделение бизнес-логики от деталей реализации
  • Улучшение читаемости и понимаемости кода
  • Легкость внесения изменений и добавления новых функциональностей
  • Улучшение масштабируемости и тестируемости приложения

Пример Clean Architecture

Представим пример применения Clean Architecture на простом приложении для управления списком задач. В таком приложении мы можем выделить следующие уровни:

  • Presenter – уровень представления бизнес-логики и интерфейса пользователя
  • UseCase – уровень, отвечающий за выполнение бизнес-логики
  • Repository – уровень доступа к данным
  • Entity – уровень, описывающий бизнес-сущности

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

Заключение

Применение Clean Architecture помогает создавать гибкие, чистые и легко поддерживаемые системы. Этот подход позволяет разделить бизнес-логику от деталей реализации, что облегчает работу разработчикам и повышает качество разработанного ПО.

0 0 votes
Article Rating
25 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@meteysh
2 months ago

Охапка дров и плов готов 😂, молодец, круто объяснил. Спасибо! 🎉

@shortyshort183
2 months ago

Супер. Никак не мог структурировать правильно интерфейсы и классы. Спасибо огромное

@channel-yg2xc
2 months ago

Спасибо за видео, интересная тема.

Могли бы вы уточнить один момент: если у сегмента с бизнес-логикой в большинстве своём нет интерфейсов, может ли это быть нарушением чистой/гексагональной архитектуры при условии, что предметная область декомпозирована нормально и её реализация соответствует практикам low coupling & high cohesion? Просто складывается впечатление, что чуть ли не основной идеей описанных архитектурных подходов является выделение интерфейсов даже там, где это, казалось бы, смысла не имеет. Например, не понятна польза от интерфейсов для рядовых crud-операций или даже core бизнес логики, если в настоящее время существует единая реализация конкретного процесса, — на мой взгляд, наличие интерфейсов с единой реализацией скорее привносит сложность в проект, к тому же, если у процесса единая реализация, возникает сложность с наименованием интерфейсов и имплементаций, вроде BuisnessProcess и BuisnessProcessImpl.

@masserrackheim5358
2 months ago

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

@user-zt2ob3le7e
2 months ago

Да с чего вы все решаете, что отсутствие кода это в плюс!? Наоборот, два три слайда с примерами более информативны чем растекание по древу!

@user-cc9lq6un4b
2 months ago

А почему application business layer не является отдельным сервисом?
Просто сперва вы выносили Data access layer в отдельный кружок, а потом App layer как обертку бизнес логики.
Как действовать, есди у меня есть приложение и сайт и у них слегка разная логика? Делать два сервиса: syte и application, которые зависят от контрактов сервиса с бизнес логикой?

@sergeyplotnikov4303
2 months ago

Без кода непонятно

@arvpro8970
2 months ago

А где должен храниться bull process который выполняет таски?
Грубо говоря фоновые службы

@jellyfish6265
2 months ago

сорри, что это за бред? где слои?

@bubbletubbe
2 months ago

вроде как плагины реализуют интерфейсы которые в ядре БЛ, получается что они 'одноразовые' и в другой проект их не вытащить без куска БЛ … ну такоэ

@user-sv7cf6ll2i
2 months ago

Круть

@evgenasd8892
2 months ago

Да ролик понравился! А теперь попросить хочу снять о разработке через приемочное тестирование (только пример брать не правила переключения сигналов светофора, а что нибуль другое, на ваш выбор). Так называемое Atdd. В каком случае нужен приемочный тест а в каком переходим к юнит тесту, разобрать разницу, Спасибо.

@mewforest
2 months ago

Охуенно! То, что искал! Спасибо огромное!

@andreypozin8048
2 months ago

Дружище…почитай заново схему Дади Боба…и посмотри внимательно где находятся UseCases

@_Al_Kuznec
2 months ago

Ничего не поняла,что хотел сказать(((
По дяде Бобу должно быть несколько конц.кругов. А где они здесь? Здесь все в куче по центру. почему и зачем не понятно((

@t0digital
2 months ago

Пуши на голубях и кофейная гуща вместо бюро кредитных историй это хорошооо😂
Рад новому отличному каналу!

@serhiiboiko8957
2 months ago

Здравствуйте! Расскажите пожалуйста как совмещать Clean Architecture с Microservice Architecture, если это возможно. Каждый микросервис отдельно разрабатывать как Clean Architecture? Или например Core Business Rules вынести в отдельную сборку, которая будет использоваться всеми микросервисами? А Application Business Rules делать для каждого микросепрвиса свои.

@paulkasler2173
2 months ago

Лайк поставлю, потом посмотрю , о чем то умном говорят

@ivan_xalie
2 months ago

5.46: А что не так с mockito?! 😀

@user-zd6di5mq9z
2 months ago

Интересная серия роликов про архитектуру. Спасибо, с меня подписка.