--- title: Композиция фабрик description: Пример композиции business-фабрик на уровне screen-модуля в React-проекте --- # Композиция фабрик Раздел показывает, как собрать API нескольких business-модулей в React screen-модуле. Пример подходит для простой композиции, когда screen сам является точкой использования доменов. ## Идея Композиция фабрик выполняется в модуле-потребителе: screen, layout или другом модуле группы «Композиция». Business-модули не импортируют runtime-код друг друга напрямую, а cross-domain зависимости получают только через аргументы фабрик. ## Структура screen-модуля ```text screens/home/ ├── home.screen.tsx └── index.ts ``` ## Сборка фабрик Файл: `screens/home/home.screen.tsx`. ```tsx import { customerFactory } from '@/business/customer' import { orderFactory } from '@/business/order' const customer = customerFactory() const order = orderFactory({ customer }) const { useOrder, OrderCard } = order export const HomeScreen = () => { const currentOrder = useOrder() return } ``` `customerFactory` создаётся первой, потому что `orderFactory` зависит от части API домена `customer`. Модуль `order` не импортирует `customer` в runtime — зависимость передаётся снаружи. ## Публичный API screen-модуля Файл: `screens/home/index.ts`. ```ts export { HomeScreen } from './home.screen' ``` Screen экспортирует только собственный публичный API. Собранные экземпляры business API остаются деталями реализации screen-модуля.