Understanding the different design patterns so far