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