Java design pattern examples for the future reference