Add design pattern learnings and strategy pattern code