본문 바로가기
아키텍처/클린 아키텍처

클린 아키텍처 - 설계원칙 - ISP

by SSaMKJ 2023. 2. 11.

설계원칙

SOLID

  • SRP: 단일 책임 원칙 Single Responsible Principle
  • OCP: 개방-폐쇄 원칙 Open-Closed Principle
  • LSP: 리스코프 치환 법칙 Liskov Substitution Principle
  • ISP: 인터페이스 분리 원칙 Interface Segregation Principle
  • DIP: 의존성 역전 원칙 Dependency Inversion Principle

 

ISP

  • 인터페이스 분리 원칙 Interface Segregation Principle

[그림 4-1. 인터페이스 분리 원칙]

  • 그림 4-1에서 기술된 상황에서, 다수의 사용자가 me 클래스의 오퍼레이션을 사용한다.
    • children: cooking, exercise
    • wife: cooking, clean_home, making_money... 등등 다수
    • boss: goto_work, coding
  • 위 상황을 가정해보자. _me_를 사용하는 객체들의 사용하는 메서드는 정해져있다. 이들은 각기 다른 이유로 _me_를 사용한다.
  • me*에서 *coding 메서드가 수정된다면 _me_를 사용하는 children, wife에도 영향을 받는다.
  • 그림4-1에서는 객체를 직접 사용하고 있지만 중간에 인터페이스가 있어도 마찬가지이다.

  • 이러한 문제는 그림 4-2에서 보는 것처럼 오퍼레이션을 인터페이스 단위로 분리하여 해결할 수 있다.[그림 4-2 분리된 오퍼레이션]
  • coding 메서드가 수정된다면 어떻게 될까? 영향을 받는 객체는 boss 밖에 없을 것이다. 인터페이스를 분리함으로서 변경의 전파가 막아진다.

결론

  • SRP가 클래스 단일책임을 강조한다면 ISP는 인터페이스 단일책임을 강조합니다.
  • ISP를 통해서 반드시 필요한 최소한의 메소드에 의존하면 변경을 최소화 시킬 수 있다.

 

 

 

클린 아키첵처 전체 보기 

클린 아키텍처란? https://blog.kjslab.com/199
클린 아키텍처 - 설계원칙 - SRP https://blog.kjslab.com/200 
클린 아키텍처 - 설계원칙 - OCP https://blog.kjslab.com/201 
클린 아키텍처 - 설계원칙 - LSP https://blog.kjslab.com/202 
클린 아키텍처 - 설계원칙 - ISP https://blog.kjslab.com/203  
클린 아키텍처 - 설계원칙 - DIP & SOLID 요약 https://blog.kjslab.com/204 
클린 아키텍처 - 컴포넌트 https://blog.kjslab.com/205 
클린 아키텍처 - 컴포넌트 결합 - ADP https://blog.kjslab.com/206   
클린 아키텍처 - 컴포넌트 결합 - SDP https://blog.kjslab.com/207
클린 아키텍처 - 컴포넌트 결합 - SAP & 결론 https://blog.kjslab.com/208 

댓글