종업원 클래스는 정상 작업 시간(workHours 속성)과 초과 작업 시간(overTimeHours 속성)을 기반으로 임금을 계산하는 기능(calculatePay 메서드)를 제공한다. 이 클래스 설계는 SRP와 OCP를 만족하는가?



위 종업원 클래스는 임금 계산이라는 단일 책임을 수행하지만 임금 계산 방법에 대해서 새로운 임금 계산 로직을 추가하면 calculatePay 메서드를 수정해야 한다. 따라서 SRP를 만족하나 OCP는 위반한다.


따라서 위의 종업원 클래스에 대해 OCP를 만족하려면 아래의 그림과 같아야 한다.


public int calculatePay(){
  return payManager.calcPay(this);
}

+ Recent posts