티스토리 뷰

 

인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다.

바꿔 말하면, 클라이언트는 자신이 사용하는 메소드에만 의존해야 한다.

 

다음 예제를 살펴보자.

게시글과 관련한 UI들이 모두 ArticleService 인터페이스를 구현하고 있다. 

 

겉으로 보기에는 아무런 문제가 없어 보이지만..

예를 들어 게시글 목록 관련된 메소드가 추가된다고 생각해보자. 그러면 게시글 목록 UI와 관련이 없는 게시글 작성 UI, 게시글 삭제 UI 에도 해당 메소드를 추가로 구현해야 할 것이다. 이는 단일책임원칙(SRP)이 위배된 것과 마찬가지로 한 기능의 변화가 다른 기능에 영향을 주고 있으므로 피해야할 상황이다.

 

그럼 이 문제를 어떻게 해결할 수 있을까?

위와 같이 인터페이스를 분리하면 된다.

이제 각 인터페이스가 변경되더라도 이를 구현하고 있는 클라이언트의 코드만 변경하면 된다. 다른 SOLID 원칙과 마찬가지로, ISP를 지키면 기능의 변경, 확장이 쉬워진다.

 

코드 출처, 참고 도서 : 개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴, 최범균 지음, 인투북스

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/10   »
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
글 보관함