1. 단일 책임 원칙이란?
•
하나의 객체가 하나의 책임만 져야 한다는 의미이다.
•
클래스를 단 한 가지 목표만 가지고 작성해야 한다는 것을 의미한다.
•
단일 책임 원칙은 애플리케이션 모듈 전반에서 높은 유지보수성과 가시성 제어 기능을 유지하는 원칙이다.
2. 예시
직사각형 면적을 구하고 단위를 변환하는 문제를 다음과 같이 RectangleAreaCalculator라는 하나의 클래스에서 구현할 수 있다.
public class RectangleAreaCalculator {
private final int width;
private final int height;
public RectangleAreaCalculator(int width, int height) {
this.width = width;
this.height = height;
}
public int area() {
return width * height;
}
}
Java
복사
위 코드는 직사각형 면적을 계산하는 한 가지 동작만 수행하기 때문에 단일 책임 원칙을 따른다.
다음은 미터를 피트(feet)로 변환하는 동작만 수행하는 메서드이다.
public class AreaConverter {
private static final double INCH_TERM = 0.0254d;
private static final double FEET_TEAM = 0.3048d;
public double metersToInches(int area) {
return area / INCH_TERM;
}
public double metersToFeet(int area) {
return area / FEET_TEAM;
}
}
Java
복사
이 클래스 역시 단일 책임 원칙을 따른다.
⇒ 피트 변환 동작만 수행하는 AreaConverter 클래스
이와 같이 단일 책임 원칙을 통해 클래스 설계를 잘하면 클래스 분석에 대한 오버헤드를 줄일 수 있다.