Design Patterns Elements of Reusable Object Oriented Softwarevisit http://myebookpdf.com/?book=0201633612