Interfaces AbstractClasses
Defining a contract (interface/abstract class) separately from any concrete implementation — what makes patterns like Strategy and Adapter possible in the first place.
Why we need this / what value this brings
Defining behavior as a contract, separate from any specific implementation, is the prerequisite for almost every structural/behavioral pattern above.
When to use this
Any time more than one concrete implementation of a behavior needs to be swappable behind the same call sites.
How to use or implement this
Prefer structural typing (Python's Protocol, TypeScript's structural interfaces) over explicit inheritance where the language supports it — less coupling than an abstract base class hierarchy.
Research questions
- Python's structural typing (Protocol) vs explicit ABCs — which fits the
ProviderAdapterinterface better?
Empty folder — drop notes, links, and findings here as you research.