티스토리 뷰

인터페이스 분리 원칙(ISP)

인터페이스 분리 원칙(ISP)

 

클라이언트는 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다.

 

클라이언트는 자신이 사용하지 않는 메소드에 의존하도록 강제될 때, 인터페이스가 변경되면 클라이언트 또한 영향을 받기 마련이다. 이러한 결합을 낮추기 위해 거대한 인터페이스를 분리해서 사용할 수 있다.

 

Untitled Diagram drawio

세 개의 클라이언트에서 employee 를 사용하고 있는 모습입니다. 앞선 원칙들에 따라 employee에서의 변경이 모든 클라이언트들에게 영향을 미치므로 DIP원칙에 따라 인터페이스를 생성합니다. 즉 컴파일 의존성은 클라이언트들은 인터페이스로 이동하지만 런타임 의존성은 여전히 employee에 있습니다.

 

Untitled Diagram drawio (1)

 

employee 의 변경이 클라이언트에 영향을 미치지 않지만 인터페이스가 변경이 된다면 클라이언트들은 여전히 영향을 받게 됩니다. 만일 methodForA() 에서 파라미터를 변경했다면 해당 메서드를 사용하지 않는 BC 또한 영향을 받게 됩니다. 이러한 상황에서 ISP를 통해 문제를 해결합니다.

 

Untitled Diagram drawio (2)

 

클래스가 모든 클라이언트 고유의 인터페이스를 상속하고 그것을 구현함으로써 클라이언트간의 불필요한 의존성을 끊고 독립적으로 만들 수 있다. 인터페이스가 불가피하게 변경되어야한다면 직접 인터페이스를 변경하는 대신 새로운 인터페이스를 생성하도록 해 재컴파일과 재배포를 피할 수도 있다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함