Object Oriented Design Principles

Nicely explained here :


Software architecture

like MVC, 3-Tier, MVP tells us how overall projects are going to be structured.

Design pattern

allows us to reuse the experience or rather, provides reusable solutions to commonly occurring problems. Example – an object creation problem, an instance management problem, etc.


tell us, do these and you will achieve this. How you will do it is up to you.

object oriented design

In the same way, object oriented design is filled with many principles which let us manage the problems with software design.

  1. Class Design principles – Also called SOLID

  2. Package Cohesion Principles

  3. Package Coupling principle


It’s an acronym of five principles [introduced by Mr. Robert Martin (commonly known as Uncle Bob) i.e.,

  • Single responsibility,
  • Open-closed,
  • Liskov substitution,
  • Interface segregation and
  • Dependency inversion.

It’s said (Wikipedia) when all five principles are applied together intend to make it more likely that a programmer will create a system that is easy to maintain and extend over time

Another important Concept: Programming to an Interface

Read from here : http://stackoverflow.com/questions/383947/what-does-it-mean-to-program-to-an-interface



orthogonal design means there is only one way to change the property of the system you are controlling — executing Operation A exerts no impact on Operation B