design patterns explanation this repo will contain explanations and implementation for several design patterns