개발 이야기/OOP
[SOLID] 인터페이스 분리 원칙(ISP)이란?
안녕하세요? 제이온입니다.
저번 시간에는 리스코프 치환 원칙에 대해서 알아 보았습니다. 오늘은 인터페이스 분리 원칙을 설명하겠습니다.
인터페이스 분리 원칙 (Interface Segregation Principle)의 정의
인터페이스 분리 원칙은 "클라이언트는 자신이 사용하는 메소드에만 의존해야 한다."를 의미합니다. 이를 쉽게 표현하면, "인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다."라고 바꿔 말할 수 있습니다.
인터페이스 분리 원칙을 위반하였을 때의 문제
위 구조는 인터페이스 분리 원칙을 위반한 예시입니다. User1은 op1, User2는 op2, User3는 op3를 사용한다고 가정해 봅시다. 이때, User1의 소스 코드는 op2와 op3를 사용하지 않음에도 이것들에 의존하며, op2의 소스 코드가 변경된다면 User1을 재컴파일하여 배포해야 한다는 문제가 있습니다.
따라서, ISP를 지키기 위해서는 구조를 아래처럼 변경해야 합니다.
OPS를 상속받는 U1Ops, U2Ops, U3Ops로 분리한다음, 적합한 클라이언트가 각각의 메소드를 사용할 수 있도록 바꾸면 됩니다.
정리
인터페이스 분리 원칙은 클라이언트를 기준으로 인터페이스를 분리함으로써, 클라이언트로부터 발생하는 인터페이스의 여파가 다른 클라이언트에 미치는 영향을 최소화하는 것을 목표로 한다고 할 수 있습니다.
출처
개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴 - 최범균
'개발 이야기 > OOP' 카테고리의 다른 글
[OOP] 다형성(Polymorphism)이란? (1) | 2021.05.28 |
---|---|
[SOLID] 의존 역전 원칙(DIP)이란? (3) | 2021.03.12 |
[SOLID] 리스코프 치환 원칙(LSP)이란? (2) | 2021.03.11 |
[SOLID] 개방 폐쇄 원칙(OCP)이란? (0) | 2021.03.08 |
[SOLID] 단일 책임 원칙(SRP)이란? (2) | 2021.02.25 |
댓글