카테고리 없음

[SOLID] LSP(=Liskov substitution principle, 리스코프 치환 원칙)

네모메모 2022. 6. 28. 23:02
반응형

SOLID 원칙 중 3번째인

1.  LSP (=Liskov substitution principle, 리스코프 치환 원칙)

            " 특정 메소드가 상위 타입을 인자로 사용한다고 할 때,

                그 타입의 하위 타입도 문제 없이 정 상적으로 작동을 해야 한다."

 

-  다른 말로

   "상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한 다."를 의미

 

public int calculate(final Item item) {
	return item.calculate();
}

ㄴ> 상위 타입인 Item이 있고, 그 하위 타입이 Apple이라면,

        LSP원칙 준수 시 위 인자로 item이 아닌 apple을 넘겨도 코드가 동작해야 합니다.

 


 

 

- LSP 원칙이 제대로 지켜지지 않으면 다형성에 기반한 OCP(개방 폐쇄 원칙) 역시 위반하는 것

   따라서, 리스코프 치환 원칙을 지키는 것이 중요합니다.

 


 

 

- 'LSP 원칙은 기능의 명세와 확장에 대한 것'으로

상위 타입에서 정한 명세를 하위 타입에서도 그대로 지킬 수 있을 때 상속을 해야 합니다. (혹은, 상속을 하게 된다면 해당 메소드를 정의하지 않아야 합니다.)

 

 

 


[출처]

- 위키 : https://ko.wikipedia.org/wiki/%EB%A6%AC%EC%8A%A4%EC%BD%94%ED%94%84_%EC%B9%98%ED%99%98_%EC%9B%90%EC%B9%99

- SRP

-> https://steady-coding.tistory.com/383

- https://www.nextree.co.kr/p6960/

 

- 개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴 - 최범균

 

 

 

 

반응형