Stav dette: Design patterns explained: a new perspective on object oriented design