Design patterns you should know