Design pattern principles
The first design pattern principle
> program to an interface, not an implementation
The sencond design pattern principle
> favor object composition over class inheritance
> program to an interface, not an implementation
> favor object composition over class inheritance