Изявленията за превключване са склонни да растат и да се превръщат в грозни и гадни зверове, независимо колко добре се грижите за тях.

Например, представете си, че имате тази част от кода във вашата Angular услуга:

Можем да използваме инжектирането на зависимости на Angular, за да ни помогне да изчистим командата switch.

Решението е изградено чрез работа с интерфейс и InjectionToken. Всеки клас, който имплементира интерфейса, ще съдържа логиката, намираща се под един блок case. Всеки клас ще бъде регистриран в DI на Angular под нашия InjectionToken с помощта на мулти-опцията.

Нека започнем с дефинирането на интерфейса, който по-късно ще бъде използван като тип, който ще бъде инжектиран в услугата:

След това трябва да създадем InjectionToken въз основа на горния интерфейс:

Сега, за всеки блок case, ще създадем клас, който ще имплементира нашия интерфейс:

След това можем да регистрираме класовете в DI на Angular с помощта на InjectionToekn:

Когато multi е зададено на true, това означава, че нашият InjectionToken може да бъде регистриран многократно като предоставяне и при инжектиране на токена ние връщаме всички класове\стойности под този токен:

Сега можем напълно да се отървем от командата switch и да потърсим CaseLogicHandler, от който се нуждаем, и след това да извикаме логиката:

Това е.

Решението е по-подробно от командата switch, но предоставя много по-чист и елегантен код.