Algorithms should depend on abstractions with minimal interfaces, instead of specific implementations.
CategoryStructuralPatterns