В парадигме OO Вы могли сделать это с помощью старого доброго полиморфизм . Слишком большой, если - еще структуры или конструкции переключателя иногда считают запахом в коде.
См. http://www.bitvise.com/wug-logontype для подробного обсуждения проблемы и рекомендации:
Мы рекомендуем пользователям, которые требовать для доступа к терминальной оболочке используйте «интерактивный» тип входа в систему.