--- title: Композиция фабрик description: Пример композиции business-фабрик на уровне composition module в React-проекте --- # Композиция фабрик Раздел показывает, как собрать API нескольких business-модулей в React composition module. Пример подходит для простой композиции, когда page composition сама является точкой использования доменов. ## Идея Композиция фабрик выполняется в модуле-потребителе на слое `compositions`: page, layout, screen, widget или другом composition module. Business-модули не импортируют runtime-код друг друга напрямую, а cross-domain зависимости получают только через аргументы фабрик. ## Структура page composition ```text compositions/pages/home/ ├── home.page.tsx └── index.ts ``` ## Сборка фабрик Файл: `compositions/pages/home/home.page.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 HomePage = () => { const currentOrder = useOrder() return } ``` `customerFactory` создаётся первой, потому что `orderFactory` зависит от части API домена `customer`. Модуль `order` не импортирует `customer` в runtime — зависимость передаётся снаружи. ## Публичный API page composition Файл: `compositions/pages/home/index.ts`. ```ts export { HomePage } from './home.page' ``` Page composition экспортирует только собственный публичный API. Собранные экземпляры business API остаются деталями реализации модуля.