SOLID 원칙이란?
Single Responsibility Principle |
→ |
단일 책임 원칙 |
Open-Closed Principle |
→ |
개방-폐쇄 원칙 |
Liskov Substitution Principle |
→ |
리스코프 치환 원칙 |
Interface Segregation Principle |
→ |
인터페이스 분리 원칙 |
Dependency Inversion Principle |
→ |
의존성 역전 원칙 |
Interface Segregation Principle
인터페이스 분리 원칙
각 모듈은 자신이 사용하지 않는 것에 의존하면 안 된다.
즉, 자신이 사용하는 메서드에만 의존해야 한다.
인터페이스 분리 원칙 위반 예시
위의 그림을 보면 지렁이와 강아지가 동물을 상속 받고 있습니다.
모든 메서드를 상속받다보니 지렁이는 짖지 않는데도 bark()를 사용할 수 있습니다.
필요하지 않은 것까지 상속을 받아 생기는 일입니다.
인터페이스 분리 원칙 준수 예시
움직임과 호흡, 소리로 필요한 단위로 나누게 되었습니다.
필요한 것만 상속받아 지렁이에게 필요없는 소리는 제외한 채 움직임과 호흡만을 받아 짖지 않아도 되는(?) 지렁이를 만들게 되었습니다.
코드로 보기 (kotlin)
interface Movement {
fun moveFrontward()
fun moveBackward()
}
interface Breath {
fun breath()
}
interface MakeASound {
fun bark()
fun howl()
}
class EarthWorm() : Movement, Breath {
override fun moveFrontward() {}
override fun moveBackward() {}
override fun breath() {}
}
class Dog() : Movement, Breath, MakeASound {
override fun moveFrontward() {}
override fun moveBackward() {}
override fun breath() {}
override fun bark() {}
override fun howl() {}
}
MakeASound에 bark가 howl로 바뀌든, 추가가 되든 EarthWorm은 영향을 받지 않게 됩니다.
ISP(인터페이스 분리 원칙)은 불필요한 메서드를 의존, 상속받지 않도록
인터페이스를 세분화되도록 잘 분리하여 만들어서 상속받아야 한다.
참고
[OOP] 객체지향 5대 원칙(SOLID) - 인터페이스 분리 원칙 (ISP)
이번 글에서는 객체지향의 5대 원칙 중, `인터페이스 분리 원칙 (ISP)`에 대해 알아봅니다!
velog.io
인터페이스 분리 원칙 (ISP: Interface Segregation Principle)
목차 인터페이스 분리 원칙 (ISP: Interface Segregation Principle) 클라이언트는 사용하지 않는 인터페이스에 강제로 의존해서는 안된다. 로버트 C. 마틴 인터페이스 분리 원칙(ISP)은 클라이언트가 자신
yoongrammer.tistory.com
'개발 공부 > 아키텍처' 카테고리의 다른 글
SOLID 원칙을 알아보자 5 : 의존성 역전 원칙 - kotlin (0) | 2023.08.25 |
---|---|
SOLID 원칙을 알아보자 3 : 리스코프 치환 원칙 - kotlin (0) | 2023.08.09 |
SOLID 원칙을 알아보자 2 : 개방-폐쇄 원칙 - kotlin (0) | 2023.08.03 |
SOLID 원칙을 알아보자 1 : 단일 책임 원칙 - kotlin (0) | 2023.07.29 |