---
id: abstraction
requestedLanguage: en
descriptionLanguage: en
---

# Branch by Abstraction

- Type: migration technique
- Group: Evolving existing code
- Placement: Changing an existing system
- [Source](<https://martinfowler.com/bliki/BranchByAbstraction.html>)

[HTML](https://dpm.cnonim.name/practices/abstraction/)

A shared abstraction enables gradual replacement of an implementation while the system keeps working.

## Relationships

- may switch implementations through: [Feature Flags / Feature Toggles](/practices/flags/en.md) (support)
- can be combined with: [Parallel Change / Expand–Contract](/practices/expand/en.md) (combination)
- is a related migration strategy to: [Strangler Fig](/practices/strangler/en.md) (comparison)

[Show on the map](https://dpm.cnonim.name/#practice=abstraction&lang=en)
