This is also referred to as having a directed acyclic graph.[2] For example, package C depends on package B, which depends on package A. If package A also depended on package C, then you would have a cycle. Composite reuse principle: Favor polymorphic composition of objects over inheritance.[2]