1. Law of Demeterhistorical

    Reducing knowledge of distant object structure and avoiding brittle navigation through internal collaborators.

  2. Composition over Inheritancehistorical

    Reusing behavior through composition/delegation when subtype inheritance would create unnecessary coupling.

  3. Object-Oriented Design Principleshistorical

    A practical view of SOLID and related principles for controlling coupling, responsibilities, and change.

  4. Object-Oriented Design Patternshistorical

    Reusable design structures and the trade-offs behind creational, structural, and behavioral patterns.

  5. Singleton Patternhistorical

    A single shared instance, initialization safety, lifecycle, testability, and global-state trade-offs.

  6. Proxy Patternhistorical

    Interposing an object to control or augment access to another object while preserving its contract.

  7. Template Method Patternhistorical

    Fixing an algorithm skeleton while allowing selected steps to vary in subclasses or callbacks.

  8. Factory Method Patternhistorical

    Separating object creation decisions from clients that consume the created abstraction.

  9. State Patternhistorical

    Representing state-dependent behavior with explicit state objects instead of sprawling conditionals.

  10. Builder Patternhistorical

    Constructing complex objects step by step with readable optional configuration and validation.