Describir: Java design patterns :