-Is a simple and intuitire principle but practice it is somethimes hard to get it right.
-Also represent a good way of identifying classes during the design phase of an application and it reminds you to think of all the ways a class can envolve.
-Motivation:
1-A responsibility is considered to be one reasono to change.
2-This principle states that if we have 2 reasons to change for a class, we have to split the fuctionality in two classes.
3-Each class will handle only one responsibility.
4-Also might affeect the other e.g adding new content type(like html) make you to add code for each protocol implemented.