본문 바로가기
Architecture

[Clean Architecture 정리] 10장. ISP

by 테리는당근을좋아해 2022. 7. 23.

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

- 인터페이스는 클라이언트에 특화되도록 분리시키는 설계 원칙

 

 

왜 인터페이스 분리 원칙이 필요한가?

- 위의 그림의 클래스 설계에서 Client1은 Ops 클래스의 ops1 메서드를, Client2는 ops2, Client3은 ops3 메서드를 사용한다고 가정하자

- Ops 클래스가 정적 타입의 언어로 작성되었을 때, Client1이 ops2(), ops2() 메서드를 사용하지 않아도 Clinet1은 두 메서드를 의존하게 된다.

- 이러한 의존성은 ops2()가 변경되어도 Client1을 다시 컴파일 후 배포해야함을 의미한다.

- 이렇게 사용하지 않는 메서드를 의존하는 문제를 인터페이스를 분리함으로써 해결할 수 있다.

 

 

 

 

 

ISP와 언어

- ISP는 아키텍처가 아닌 언어와 관련된 문제로 볼 수 있다.

- 정적 타입 언어는 타입 선언문을 사용하도록 강제하며, 이로인해 소스 코드 의존성이 발생해 재컴파일 또는 재배포가 강제되는 상황이 초래된다.

- 동적 타입 언어는 선언문이 존재하지 않고 런타입에 추론이 발생하기 때문에, 소스 코드 의존성이 없으며 재컴파일과 재배포가 필요없다.

 

 

ISP와 아키텍처

- ISP가 언어와 관련된 문제로 볼 수 있지만, 아키텍처에서도 인터페이스 분리 원칙은 중요하다.

- 필요 이상으로 많은 걸 포함하는 모듈에 의존하는 것은 소스코드 뿐만아니라 고수준 아키텍처에서도 마찬가지이다.

- 불필요하게 많은 역할을 하는 무언가에 의존하면 예상치도 못한 문제에 빠질 수 있다.

 

 

서적 : http://www.yes24.com/Product/Goods/77283734

 

클린 아키텍처 - YES24

살아있는 전설이 들려주는 실용적인 소프트웨어 아키텍처 원칙『클린 코드』와 『클린 코더』의 저자이자 전설적인 소프트웨어 장인인 로버트 C. 마틴은 이 책 『클린 아키텍처』에서 이러한

www.yes24.com

 

댓글