I received an email message via this blog for some help in identifying good recources on OOP and Design Patterns for those new to the concepts. It has been awhile since I browsed the Internet for such resources and read new books specific to the subject, so I thought I would list resources that I have used in the past and invite others to add to the list via the comments. After a couple of weeks or so, I will rewrite a second post with a complete list of everyone’s feedback that will be useful to everyone. I really enjoy these topics, so I am interested in what people might suggest.
I have 5 books that really helped me with OOP and Design Patterns, which I believe are still relevant today:
- Applying UML and Patterns 3rd Edition by Craig Larman – This is a textbook used in classes that discusses assigning responsibilities to objects using GRASP ( General Responsibility Assignment Software Patterns ). It has tons of information on OOP, Design Patterns, and Agile Development. I absolutely love this book. Good beginner book.
- Agile Software Development Principles, Patterns, and Practices by Robert Martin – The OOP concepts presented in this book are fantastic, but the examples in Java and C++ leave little to be desired. That being said, if you can look beyond or through the code to capture the essence of the principles themselves, this is a great book. More of an intermediate developer book. A good stretch for a beginner.
- Design Patterns in C# by Steven Metsker – At the time I bought this book, I was just happy to find a design pattern book with only C# examples Most design pattern books were in Java and C++ and I wasn’t skilled enough to grasp the material without seeing it in my preferred language. Steven does a great job of going through all the important design patterns in C#, although I could do without so many examples involving rockets A solid intermediate developer book and a good stretch for beginners.
- Patterns of Enterprise Application Architecture by Martin Fowler – Lives up to all the hype surrounding it. I always find myself referring to this book, because it is a catalog of patterns like Design Patterns in C#, which makes it easy to get to the information you need quickly. Now if he would only come out with C# and VB.NET versions. Good for the intermediate developer.
- Domain Driven Design by Eric Evans – Great book that taught me a lot about domain modeling, n-layer design, and design patterns, but it was way past my grasp when I first bought it. Regretted the purchase until I picked it up 8 months later after reading a few other books and then went “Aha!” Clearly not a beginner book in my opinion, but a good book to read after you get a more solid grasp of the fundamentals and want to challenge yourself. Solid intermediate developer book.
Those are all the books I have on the subject, and in my opinion, I feel lucky that I picked such good ones. Aside from Applying UML and Patterns by Craig Larman, the others might be a bit of a stretch for developers new to OOP and design patterns, but they are all good nonetheless and I recommend them at some point. I have heard good things about other books, but I will refrain from mentioning them here as I don’t have any personal experience with them. Hopefully someone else will mention a good book on the subject.
List of OOP and Design Pattern related websites I remember from the past:
- Data and Object Factory – A list of common design patterns inspired by GoF ( http://www.dofactory.com/Patterns/Patterns.aspx ).
- Pattern Share – Bringing together software patterns from different authors ( http://www.patternshare.org/ ).
- Object Mentor – Various OOP articles based on Agile Software Development book mentioned above ( http://www.objectmentor.com/resources/listArticles?key=topic&topic=Design%20Principles )
- POEAA Catalog Online – ( http://www.martinfowler.com/eaaCatalog/index.html )
I am sure there are others. Scott Ambler comes to mind for various data access patterns but after a bit of investigation I couldn’t find a good index of resources for him.
I have done a few chapter by chapter book reviews on a couple of books mentioned above that may be of help:
- Agile Software Development Principles, Patterns, and Practices Book Review Conclusion
- Agile Software Development Book Review Index
- Applying UML and Patterns and GRASP Patterns Index
- Articles on OOP and Design Patterns
Raymond has a number of great articles:
- 4 major principles of Object-Oriented Programming
- Encapsulation Defined
- Polymorphism Defined
- Inheritance Defined
- Data Abstraction Defined
I know there has to be a number of great OOP and design pattern articles written by other people. I just haven’t looked around in awhile.
If you know of any great resources on OOP and Design Patterns that can help new developers as well as others, please add a comment so I can collect them and repost a full compilation later.
Hope this helps either way.