SOLID: Design Principles and Design Patterns

In Design Principles and Design Patterns, Robert C. Martin presented the SOLID principles of object-oriented software design over twenty years ago. “SOLID” continues to be a buzzword included in many resumes today. The principles are reproduced here:

  • A class should have only one reason to change.
  • A module should be open for extension but closed for modification.
  • Subclasses should be substitutable for their base classes.
  • Depend upon abstractions. Do not depend upon concretions.
  • Many client-specific interfaces are better than one general purpose interface.

Developing SOLID software is developing software that consists of minimalist components with well-defined abstractions or interfaces that are resistant to software rot caused by requirements changes.

Martin’s original paper includes a draft bibliography. Software engineers looking for additional reading may be interested in the bibliography’s “OOSC98” entry, which likely refers to Bertrand Meyer’s Object-Oriented Software Construction. It is made available by the author, reserving all copyrights, including the rights to distribution.

Questions, comments, and responses are welcomed and appreciated.

Leave a Reply