2) улучшенная альтернатива глобальным переменным
Вообще избавься ты от глобальных переменных, уже написали IoC. Протаскивай все через контейнеры. Или ладно там один AppContext - на все приложение.
Если ты пришел к ООП, от процедурного и начал этим интересоваться, то рано или поздно придешь к IoC и т.п. Поэтому займись этим сейчас, СИМХО