DRY - Don't Repeat Yourself
DRY means avoiding duplicated knowledge and logic so that a business rule has a single authoritative representation. OOP can help through encapsulation, reusable abstractions, composition, inheritance where appropriate, polymorphism and shared services. However, DRY does not mean eliminating every similar-looking line of code. Premature abstraction can create stronger coupling than the duplication it removes, so I optimize for eliminating duplicated knowledge rather than merely duplicated syntax.
DRY targets duplicated knowledge and business rules.
Encapsulation centralizes responsibilities.
Composition is often safer than inheritance for reuse.
Polymorphism can remove duplicated conditional behavior.
Avoid abstracting code merely because it looks similar if the concepts may evolve independently.