Skip to content

Latest commit

 

History

History
17 lines (14 loc) · 1.35 KB

2020-03-26 вопрос про паттерны на собеседовании.md

File metadata and controls

17 lines (14 loc) · 1.35 KB

Сделайте code review. Как можно изменить архитектуру, чтобы код выглядел лучше?

Order order = service.GetOrder();
if (order.GetType().Name == "OnlineOrder")
    AddOnlineOrder((OnlineOrder)order, dbConnection);
else
    AddOfflineOrder((OfflineOrder)order, dbConnection);

О том, какую ахинею я нёс в ответ на этот вопрос, сейчас писать не буду.

Правильным же ответом будет паттерн Посетитель.

Лаконичный код, который позволяет без проблем добавлять новые типы заказов так, что ни один джуниор не забудет поддержать этот тип – код не будет компилироваться, пока наследник не реализует abstract void Accept(IVisitor visitor), что в свою очередь заставит задуматься, что IVisitor должен делать с новым наследником.