Hermes Wiki

Bridge

Separates an abstraction from its implementation so the two can vary and evolve independently.

Why we need this / what value this brings

Avoids a combinatorial explosion of subclasses when both 'what it does' and 'how it does it' can vary independently.

When to use this

You have two dimensions of variation (e.g. notification type × delivery channel) that would otherwise multiply into one subclass per combination.

How to use or implement this

Define an abstraction that holds a reference to an implementation interface, and delegate the implementation-specific work to it, instead of subclassing the abstraction per implementation.

Research questions

  • Notification delivery (booking-confirmed, review-requested, etc. × email/SMS/push) is a candidate: the message type and the channel it goes out on could vary independently instead of one class per combination.

Empty folder — drop notes, links, and findings here as you research.

Hermes Wiki