인터페이스 분리 원칙 (interface Segregation Principle)
정의
클라이언트는 자신이 사용하지 않는 메서드에 의존하면 안된다
- 하나의 인터페이스가 너무 많은 기능을 가지게 되면, 그 기능을 모두 사용하지 않는 클라이언트가 있는 경우 불필요한 의존성이 생김.
ISP와 단일 책임 원칙(SRP)
- ISP(인터페이스 분리 원칙) 와 SRP(단일 책임 원칙) 은 둘다 클래스 or 객체가 가져야할 책임과 역할을 구분하는 데 중점을 둠.
- SRP
- 하나의 클래스가 하나의 책임만!
- ISP
- 인터페이스를 통해 여러 책임을 분리
예제
남자
클래스 가 남자친구, 아들 , 사원, 소대원 등의 역할을 가진다고 가정
- 다양한 책임을 가지는 것은 단일 책임 원칙에 어긋남.
단일 책임 원칙 적용
남자
클래스를 여러 개의 클래스로 분화한다.
- 각 클래스는 하나의 역할만을 담당
인터페이스 분리 원칙 적용
남자
클래스를 토막 X
- 여러 인터페이스를 만들어 각각의 역할 분리
여러 해결책
- 단일 책임 원칙
- 인터페이스 분리 원칙
은 각각 서로 다른 해결책을 제시함.
프로젝트 요구사항 혹은 개발자의 취향에 따라 어느 쪽을 선택할지 결정
그러나, 일반적으로 단일 책임 원칙 쪽이 더 좋은 해결책이 될 확률이 높다고 함.
최소주의 원칙
- 인터페이스를 통해 메서드를 외부에 제공하는 경우 최소한의 메서드만 제공하라
최소주의 원칙의 근거
- 상위 클래스는 풍성할 수록 좋고
- 인터페이스는 작을 수록 좋은 이유가 뭘까
- 빈약한 경우
- 자다() 가 중복
- 사람 슈퍼클래스로 타입을 선언하고, 학생 서브클래스로 객체를 생성한다면
- 학생의 생일
- 학번
속성 뿐만아니라, 소개하다, 공부하다 등의 메서드를 사용할 수 없다.
별도 다운캐스팅이 필요하게 된다.
상속
의 장점을 누릴 수 없다.
- 풍성한 경우
- 공통적으로 메서드를 가진다.
- 사람 김학생 = new 학생()
- 사람 김군인 = new 군인()
- 의 객체를 생성함
- 사람 클래스의 모든 속성과 메서드를 사용할 수 있게 된다.
- 학생은 학생의 특징적인 속성인
학번
과공부하다()
메서드만을 고유하게 가질 수 있으며
- 학생의 특징적인 기능이나 속성을 사용할때만
다운캐스팅
하면되게 된다
상속
의 장점을 누릴 수 있는 것이다.
Uploaded by N2T
'자바 > 스프링입문객체지향' 카테고리의 다른 글
[6단원]디자인 패턴 - 데코레이터 패턴 (Decorator Pattern) (0) | 2023.09.15 |
---|---|
[5단원]5원칙 - LSP (0) | 2023.09.13 |
[5단원]5원칙 - DIP (0) | 2023.09.13 |
[5단원] 객체지향 세계와 SOLID 마무리 (0) | 2023.09.13 |
[5단원]5원칙 - SOLID (0) | 2023.09.10 |