개발 공부/아키텍처

SOLID 원칙을 알아보자 4 : 인터페이스 분리 원칙 - kotlin

yong_DD 2023. 8. 22. 18:00

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