Встречается на собеседованиях • сегодня

Как реализовать пользовательский интерфейс с вычислениями чтобы не дублировалась бизнес-логика в гексагональной архитектуре

В гексагональной архитектуре бизнес-логика должна быть в ядре (domain), а UI - адаптером. Для вычислений: 1. Создаем чистые функции в domain: ```typescript // domain/calculator.ts export function calculateTotal(price: number, quantity: number): number { return price * quantity; } ``` 2. В UI слое используем эти функции через порты (интерфейсы): ```typescript // application/ports.ts export interface CalculatorService { calculateTotal(price: number, quantity: number): number; } // infrastructure/services/calculator.ts import { calculateTotal } from '../../domain/calculator'; export class CalculatorServiceImpl implements CalculatorService { calculateTotal(price: number, quantity: number): number { return calculateTotal(price, quantity); // делегируем в domain } } ``` 3. В компоненте UI инжектим сервис через dependency injection: ```typescript // ui/components/OrderForm.tsx function OrderForm({ calculator }: { calculator: CalculatorService }) { const total = calculator.calculateTotal(price, quantity); return
Total: {total}
; } ``` Так логика остается в domain, а UI только отображает результат.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы