Interfaces as Extension Points - Achieving the Open/Closed Principle Through Abstraction | OneNoughtOne