# Composition Over Inheritance

Record: `arch:composition-over-inheritance`
Kind: principle
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: recommended
Scope: class, component
Canonical: https://banes-lab.com/ontology#arch-composition-over-inheritance

## Repair

- Refactored by: Replace Inheritance with Delegation, Extract Strategy
- Detected by: inheritance depth, overridden behavior conflicts
- Violated by: fragile base class, inherited behavior misuse
- Measured by: inheritance depth, composition ratio
- Enforced by: inheritance depth limits, review rules

## requires

- [Delegation](https://banes-lab.com/records/lex/delegation.md)
- [Interface-Based Design](https://banes-lab.com/records/arch/interface-based-design.md)

## reinforces

- [Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)
- [Replaceability](https://banes-lab.com/records/arch/replaceability.md)

## enables

- [Strategy Pattern](https://banes-lab.com/records/arch/strategy-pattern.md)
- [Decorator Pattern](https://banes-lab.com/records/arch/decorator-pattern.md)

## conflicts-with

- [Deep Inheritance Hierarchy](https://banes-lab.com/records/lex/deep-inheritance-hierarchy.md)

## tensions-with

- [Simplicity for Trivial Reuse](https://banes-lab.com/records/lex/simplicity-for-trivial-reuse.md)

## tensions

- [Composition Over Inheritance Simplicity for Trivial Reuse](https://banes-lab.com/records/tension/composition-over-inheritance-simplicity-for-trivial-reuse.md)

## referenced-by

- [Bridge Pattern](https://banes-lab.com/records/arch/bridge-pattern.md)
