- Yes, you make it even harder to detect them by using an extra layer of abstraction.
- You absolutely do not solve the circular dependency but hide it by adding an extra layer of abstraction, using late bounding, or/and loosely coupling it.
The same answer returns in the following posts (which I will add for references) which is create a 3rd class on which both depend. This translates to: you are violating the Single Responsibility Principle. By moving (extracting) the responsibility both classes depend on in a separate class you'll remove the circular dependency.
FYI the Single Responsibility Pattern on Wikipedia
StackOverflow discussions by others:
- business-logic-layer-and-data-access-layer-circular-dependency
- are-circular-class-dependencies-bad-from-a-coding-style-point-of-view
My answer on StackOverflow with an example of extracting the responsibility in a seperate class.