Make it easy to switch between implementations by defining an [[Interface]] and requiring all implementations to adhere to it.
Examples
Node.js Zlib
The ability to switch between compression algorithms.