Я работаю над проектом торгового автомата, и я попытался разделить его на слои UI и BL, но у меня возникли проблемы. Например, у меня есть эта функция для оплаты монетами, которая происходит от абстрактного класса:
public override void Pay(decimal amount)
{
while (currentCoins < amount)
{
// Print instructions
// Get input
if (Valid)
{
// logic
}
else
{
// Print error
}
}
}
Так что проблема в том, что у меня нет доступа к интерфейсу внутри BL, но мне нужно постоянное общение с UI. Я думал о создании функции для каждого метода оплаты в пользовательском интерфейсе, но это нарушает OCP ...
Я ищу идеи элегантного решения, которые не нарушат SOLID принципы.
Есть ли какой-нибудь шаблон или что-то, что может решить мою проблему? (шаблон стратегии?) Буду признателен за любые рекомендации / идеи.
Спасибо:)