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)>
책에 나오는 예제 코드는 제외
그냥 내가 기억하고 싶은 내용 위주로 정리
'Dev > Clean Code' 카테고리의 다른 글
객체 지향 설계 - SOLID 원칙 (0) | 2022.02.15 |
---|---|
[클린 소프트웨어] PART 2 - CHAPTER 10 - 리스코프 치환 원칙(LSP) (0) | 2022.02.08 |
[클린 소프트웨어] PART 2 - CHAPTER 9 - 개방 폐쇄 원칙(OCP) (0) | 2022.02.07 |
[클린 소프트웨어] PART 2 - CHAPTER 8 - 단일 책임 원칙(SRP) (0) | 2022.01.21 |
[클린 소프트웨어] PART 2 - CHAPTER 7 - 애자일 설계란 무엇인가? (0) | 2022.01.18 |
댓글