Encapsulation (Information Hiding)¶
Separating "what something does" from "how it does it" reduces coupling and enables independent evolution of implementation.
Tension Addressed¶
Abstraction vs. Concreteness
Recognizable As¶
Any boundary where internal representation is hidden behind a stable interface: APIs, modules, classes, services, hardware abstraction layers
Canonical Sources¶
David Parnas, "On the Criteria To Be Used in Decomposing Systems into Modules" (1972); Bertrand Meyer, "Object-Oriented Software Construction" (1988)
Transfers To¶
API Design, Distributed Systems (service boundaries), Hardware Design (instruction set abstraction), Database Design (physical vs logical schema)
The key insight is that hiding decisions likely to change creates stable interfaces. This applies universally from transistors to microservices.
Related Concepts¶
- Abstraction - Software Architecture
- Coupling - Software Architecture