SOLID Object Oriented Design

SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion) is a mnemonic acronym introduced by Robert C. Martin which stands for five basic patterns of object-oriented programming and design in Agile Software Development.


SOLID -


SRP - Single Responsibility Principle (A class should have one, and only one, reason to change)


OCP - Open Closed Principle (open for extension, but closed for modification)


LSP - Liskov Substitution Principle (Derived classes must be substitutable for their base classes. if S is a subtype of T, then objects of type T in a program may be replaced with objects of type S without altering any of the desirable properties of that program)


ISP - Interface Segregation Principle (Make fine grained interfaces that are client specific. clients should not be forced to implement interfaces they don't use)


DIP - Dependency Inversion Principle (Depend on abstractions, not on concretions. High-level modules should not depend on low-level modules. Both should depend on abstractions.)


ref:


http://en.wikipedia.org/wiki/Solid_(object-oriented_design)


http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod


http://www.c2.com/cgi/wiki?PrinciplesOfObjectOrientedDesign


Non-Software Design Patterns - http://cns2.uni.edu/~wallingf/teaching/062/sessions/support/pattern-examples.pdf


Interface Segregation Principle - http://www.objectmentor.com/resources/articles/isp.pdf


Pablo's SOLID Software Development - http://cdn.cloudfiles.mosso.com/c82752/pablos_solid_ebook.pdf


Visitor Pattern - http://ootips.org/visitor-pattern.html


Houston Design Patterns (Visitor) - http://www.vincehuston.org/dp/VisitorDemosCpp


http://www.lostechies.com/blogs/chad_myers/archive/2008/03/11/ptom-the-liskov-substitution-principle.asp