Search
Duplicate
🏓

ISP : The Interface Segregation Principle

Category
S/W 엔지니어
Tags
S/W Engineering
Architecture
Study Note
ISP
SOLID
Created time
2009/04/17

Definition

클라이언트 코드가 자신이 사용하지 않는 method에 의존하도록 강제되어서는 아니됨
위 사항을 위해 다수의 interface로 분리 및 해당 interface에 클라이언트 코드가 의존하도록 함. 이로서 서로 다른 클라이언트 코드가 서로에 대해 독립적이 되도록 함.

ISP violated sample

public interface Modem { // connection responsibility public void Dial(string pno); public void Hangup(); // data channel responsibility public void Send(char c); public char Recv(); }
C#
복사

특징

Connection과 data channel이란 두 개의 책임이 단일 entity로 묶임

문제점

Connection 부분 code 변경이 data channel 담당 client code의 재컴파일, 재배포를 요구함

ISP complied sample

책임 별 interface 분리를 통해 특정 client code 와의 action 변경이 타 client code에 영향을 미치지 않음

Conclusion

SRP는 class 수준에서의 높은 응집도를 강조하는 반면 ISP는 interface 수준의 응집도를 강조.
어떤 class의 책임을 분리할 수 없을 경우(SRP 위반), 최소한 interface만이라도 분리할 것.

References

OOPrimer - (Object Oriented Principles Explained), Arnon Rotem-Gal-Oz
ooprimer.pdf
534.6KB