ConclusionΒΆ
- When applying Single Responsibility Principle we want to separate different [[concern]]s
- A [[class]] should do one thing and do it well!
- We can apply Single Responsibility Principle at different levels: [[Function level]], [[Object level]], [[Module level]]
- Classes with many responsibilities are hard to understand
- When Single Responsibility Principle is violated, responsibilities start to [[collate]] with each other
- Don't abuse Single Responsibility Principle
- Apply the [[Facade design pattern]] to simplify the [[API]]
- [[Module]]s that change frequently should be isolated from the other parts of system