Implementation of three principles

Add implementations of the DIP (Dependency Inversion), ISP (Interface
Segregation) and LSP (Liskox Substitution) principles