어떤 클래스를 변경해야 하는 이유는 오직 하나뿐이어야 한다. - 로버트 C. 마틴

아래와 깉이 역할과 책임이 너무 많은 클래스의 경우 "나쁜 냄새"가 난다고 한다.

남자 클래스와 의존 관계에 있는 다른 클래스들(여자친구, 어머니, 직장상자, 소대장)

남자 클래스와 의존 관계에 있는 다른 클래스들(여자친구, 어머니, 직장상자, 소대장)

위와 같이 하나의 클래스에 다양한 의존성이 있는 경우, 아래와 같이 역할(책임)을 분리하라는 것이 단일 책임 원칙이다.

남자 클래스에 단일 책임 원칙을 적용해 여러 개의 클래스로 분리

남자 클래스에 단일 책임 원칙을 적용해 여러 개의 클래스로 분리

남자라는 하나의 클래스가 역할과 책임에 따라 네 개의 클래스로 쪼개진 것을 볼 수 있다.

그리고 역할과 클래스명도 딱 떨어지니 이해하기도 좋다.

이러한 단일 책임 원칙은 클래스 뿐만 아니라 속성, 메서드, 패키지, 모듈, 컴포넌트, 프레임워크 등에도 적용할 수 있는 개념이다.

단일 책임 원칙은 잘된 경우보다 잘못된 경우를 살펴보는 것이 이해하는 데 좋다.

객체 지향 세계에서 남자는 반드시 군대를 가고, 여자는 절대로 군대를 가지 않는다고 가정해 보자.