Study Programming/Design Pattern

[SOLID] ISP(=Interface Segregation Principle, 인터페이스 분리 원칙)

네모메모 2022. 6. 29. 20:35
반응형

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://ko.wikipedia.org/wiki/%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4_%EB%B6%84%EB%A6%AC_%EC%9B%90%EC%B9%99

- https://steady-coding.tistory.com/385

- https://jaeseongdev.github.io/development/2021/04/25/ISP(%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4-%EB%B6%84%EB%A6%AC-%EC%9B%90%EC%B9%99)/ 

 

- 개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴 - 최범균

 

 

 

 

반응형