본문 바로가기
Dev/Clean Code

[클린 소프트웨어] PART 2 - CHAPTER 12 - 인터페이스 분리 원칙(ISP)

by 돈코츠라멘 2022. 2. 15.

ISP; Interface-Segregation Principle

인터페이스 분리 원칙은 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다.

 

가장 간단한 예시를 들자면,

abstract class Door {
    abstract fun lock()
    abstract fun unlock()
}

class TimerDoor() : Door() {

    override fun lock() {
        // do something
    }

    override fun unlock() {
        // do something
    }

}

여기서 TimerDoor 객체에 특정 시간이 지나면 자동으로 문이 닫히는 기능을 넣는다고 가정했을 때 Door 추상 클래스에 아래와 같이 timeout 메서드를 넣으면 안됨 👉 그러면 Door를 상속받는 모든 클래스에 필요하지 않더라도 timeout 메서드를 구현해야만 한다. 즉, 불필요한 복잡성과 중복성이 발생하게 된다.

abstract class Door {
    abstract fun lock()
    abstract fun unlock()
    abstract fun timeout()
}

 

 

 


Reference

  • Robert C. Martin - <Clean Software(Agile Software Development)>

책에 나오는 예제 코드는 제외
그냥 내가 기억하고 싶은 내용 위주로 정리

댓글