Single Responsibiility Principle

-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.