# IT:AD:Patterns:Reference Downward Only # * [[../|(UP)]] {{indexmenu>.#2|nsort tsort}} Software Circular Dependencies between modules are problematic due to the tight coupling of the mutually dependent modules which renders the separate re-use and testability of a single module impossible. Circular Dependencies may also cause memory leaks by preventing certain very primitive automatic garbage collectors (those that use reference counting) from deallocating unused objects. ## Recipe ## After applying the recommendated [[IT/AD/Patterns/Minimal Dependency Cardinality/]] pattern -- to minimize circular dependencies -- the same guidelines apply to [[IT//AD/Development/Patterns/DDD/]] based applications as older architecture patterns: Assembllies must reference Assemblies in the same or lower layers -- never higher layers. ## Resources ## * [http://en.wikipedia.org/wiki/Circular_dependency](http://en.wikipedia.org/wiki/Circular_dependency)