а можно на пальцах и в общих чертах?
На пальцах примерно так
На верхнем рисунке два класса зависят друг от друга, и поэтому получаем ошибку с circular dependency
На нижнем рисунке левый класс зависит от абстракции, а правый класс реализует абстракцию и зависит от левого класса