44 lines
4.0 KiB
Markdown
44 lines
4.0 KiB
Markdown
---
|
||
aliases:
|
||
- Ограниченный контекст
|
||
- ограниченных контекстов
|
||
- ограниченного контекста
|
||
tags:
|
||
- maturity/🌱
|
||
date: 2024-11-24
|
||
---
|
||
Ограниченный контекст (Bounded Context) — это ==логическая граница, внутри которой используется своя уникальная модель предметной области.== Он применяется в разработке для структурирования сложных систем, особенно когда бизнес-логика состоит из множества разрозненных частей.
|
||
|
||
Основные характеристики:
|
||
- **Локализация моделей:** Модель, используемая внутри одного контекста, не должна быть напрямую применима в других контекстах. Например, "Заказ клиента" в контексте управления складом может включать данные о весе и объеме, а в контексте бухгалтерии — только финансовую информацию.
|
||
- **Изоляция логики и терминологии:**. Один и тот же термин может означать разные вещи в разных контекстах. Например, "Клиент" в маркетинговом контексте — это целевая аудитория, а в контексте продаж — это покупатель с историей заказов.
|
||
- **Границы и ответственность:** Каждый контекст имеет свои четко определенные границы, и все, что относится к этому контексту (термины, сущности, события), остается внутри этих границ.
|
||
- **Интеграция контекстов:** Разные контексты взаимодействуют через явно определенные способы, такие как события, API, шины сообщений. Это позволяет минимизировать зависимость между контекстами.
|
||
|
||
Представим систему интернет-магазина. Возможные ограниченные контексты:
|
||
- **Каталог продуктов** — управление списком товаров и их характеристиками.
|
||
- **Управление заказами** — отслеживание состояния заказов.
|
||
- **Склад** — управление инвентарем и логистикой.
|
||
- **Бухгалтерия** — расчеты, счета и налоги.
|
||
|
||
Каждый из этих контекстов оперирует своей моделью данных и логикой, при этом данные могут пересекаться. Например, "Товар" есть в каталоге и на складе, но в каждом из контекстов он будет описан по-разному.
|
||
|
||
|
||
Польза
|
||
- [[../efficiency/Снижение когнитивной нагрузки при разработке|Снижение когнитивной нагрузки]] за счет локализации сложных моделей.
|
||
- Улучшение читаемости и тестируемости кода.
|
||
- Уменьшение зависимости между различными частями системы.
|
||
***
|
||
## Мета информация
|
||
**Область**::
|
||
**Родитель**::
|
||
**Источник**::
|
||
**Создана**:: [[2024-11-24]]
|
||
**Автор**::
|
||
### Дополнительные материалы
|
||
- [[Single Responsibility Principle]]
|
||
|
||
### Дочерние заметки
|
||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|
||
|