Программирование к Интерфейсам является потрясающим, оно способствует слабой связи. Как @lassevk упомянутый, Инверсия Управления является большим использованием этого.
, Кроме того, изучите ТВЕРДЫЕ принципалы . вот видео серия
, Она проходит кодированное твердое (сильно связанный пример) тогда смотрит на интерфейсы, наконец прогрессируя до инструмента МОК/DI (NInject)
У Джона Скита есть хорошая статья о синглтонах, в которой обсуждается эта проблема.
Скорее чем использовать собственный потокобезопасный ленивый инициализатор и, возможно, ошибиться, я рекомендую прочитать msdn на Lazy
.