Skip to content

Decoupling via Interface

Interpose a stable interface between components so each can change without being exposed to the other's internals.

The Diagnostic Story

Symptom: A change in one part of the system automatically breaks something somewhere else, even though the two parts are not supposed to be that tightly linked. Teams, services, or suppliers know each other's internal details by accident — because direct connection exposed everything. Small internal updates require cross-team coordination. What should be a local improvement becomes a negotiation, a freeze, or a cascade of downstream fixes.

Pivot: Stop letting the parts interact through direct exposure to each other's internals. Define a stable interface — a contract, protocol, adapter, or service boundary — that specifies what can cross between them while hiding internal variation on each side. Indirection absorbs internal change; versioning makes interface evolution explicit and negotiated rather than accidental and breaking.

Resolution: Each side can change, upgrade, or be substituted behind its interface without automatically obligating the other side to change. Necessary exchange continues through a stable, explicit surface. Dependency remains, but it is narrow, documented, and governable rather than broad, tacit, and fragile.

Reach for this when you hear…

[software architecture] “Every time the schema team touches a table, three downstream services break — we need an API in front of that database before anyone else builds on it.”

[supply chain] “Our assemblers had to redesign the fixture every time the supplier changed their process — we should have locked down a dimensional interface spec and let them do whatever they want behind it.”

[organizational design] “The data science team is embedded in every product team's Slack and gets pulled into every meeting — we need a proper intake interface so they can do focused work instead of ad hoc triage.”

Abstractions this archetype builds on — directly (a source ingredient) or as a related pattern. Links follow the typed catalog namespace.

Built directly on (8)

  • Abstraction: Focus on core elements.
  • Boundary: Defines system limits.
  • Indirection: Introduces intermediary references.
  • Information Hiding: Deliberately concealing internal facts behind a stable public surface to control dependencies.
  • Interface: A bounded, rule-governed surface across which two systems exchange information or control while hiding their internals, letting each evolve independently behind a stable contract.
  • Interoperability: Systems function together.
  • Modularity: Breaks systems into smaller units.
  • Translation Layer

Also references 7 related abstractions

Variants

Narrower or domain-specific specializations that share this archetype's core structure. Recognized variants are established; candidate variants are provisional.

Adapter-Mediated Decoupling · implementation variant · recognized

Reduce direct coupling by inserting an adapter or translation layer between incompatible or changing systems.