OOP
객체지향 프로그래밍의 5가지 원칙(3) - 리스코프 치환 원칙
RubyRabbit
2022. 8. 1. 18:36
리스코프 치환 원칙
- Liskov Substitution Principle
- 하위 타입의 인스턴스는 부모 타입의 인스턴스로 치환할 수 있어야한다.
- 하위 타입은 부모 타입의 인터페이스의 규약을 지켜야한다.
public interface DiscountPolicy {
long apply(long amount);
}
public class FixDiscountPolicy implements DiscountPolicy {
public long apply(long amount) {
// 할인 정책의 의도와는 달리 금액을 2배로 계산
return amount * 2L;
}
}
- DiscountPolicy 인터페이스를 통해 할인 정책을 적용하는 부분에서 인터페이스에서 의도한 할인과는 달리 오히려 결제 금액이 증가하는 효과를 발생할 수 있다. 이는 인터페이스를 통해 기능을 사용하는 입장에서 의도한 바가 아니므로 문제가 될 수 있다. 그러므로 인터페이스를 구현할 때에는 인터페이스에서 의도한 규약을 반드시 지켜야한다.