Describir: Design patterns in JAVA TM