반응형
SOLID 원칙 중 4번째인
1. ISP(=Interface Segregation Principle, 인터페이스 분리 원칙)
" 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다."
- 다른 말로 "클라이언트는 자신이 사용하는 메소드에만 의존해야 한다."
- 클라이언트를 기준으로 인터페이스를 분리함으로써,
클라이언트로부터 발생하는 인터페이스의 여파가 다른 클라이언트에 미치는 영향을 최소화하는 것을 목표로 한다
- Ex) ISP 위반 사례
ⓐ interface Machine 에는 copy(), print(), fax(address: Address) 와 같은 모든 기능별 메소드가 선언되어 있다.
ⓑ Machine을 상속받은 'class CopyMachine'는 copy() 외의 기능을 사용하지 않지만
ㄴ> [문제1] : 필요없는 fax(), print()도 모두 구현해줘야 한다.
ㄴ> [문제2] : Machine을 인터페이스에서 fax()나 print()에 대해서 리턴 타입이 변경된다면,
이와 전혀 상관없는 CopyMachine 클래스도 같이 수정해줘야 하는 문제가 발생한다.
[출처]
- https://steady-coding.tistory.com/385
- 개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴 - 최범균
반응형