Favor Composition Over Class Inheritance
Inheritance binds subclasses to their parent's implementation at compile time, exposing internals and making changes ripple through the hierarchy. Composing objects from interfaces keeps each piece encapsulated and swappable at runtime, so behavior can be assembled and reconfigured without rewriting class trees.
