Встречается на собеседованиях • сегодня
Как реализовать пользовательский интерфейс с вычислениями чтобы не дублировалась бизнес-логика в гексагональной архитектуре
В гексагональной архитектуре бизнес-логика должна быть в ядре (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 только отображает результат.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы