A direct dependency is formed when two classes or files have dependency over each other. The dependency can be caused by using variables or function calls.
- Cyclic dependency creates tight coupling between these classes and it is hard to reuse as separate units.
- Sometimes, circular dependency may cause memory leaks by preventing garbage collector to do their work.
C1 and C2 are the components that are directly dependent on each other.
- Cyclic dependency can be removed by using design patterns like observer or simply introducing interfaces.
- The code can be refactored to separate out the common logic to make those 3 classes where 2 classes depend on a 3rd class.