Open bumdream opened 6 years ago
자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다.
하나의 일반적인(여러기능을 포함한) 인터페이스보다는 여러개의 구체적인 인터페이스가 낫다.
interface 날개있는생물체{
void 날기();
void 물먹기();
}
class 비둘기 implements 날개있는생물체{
@Override
void 날기(){
날기();
}
void 물먹기(){
물먹기();
}
class 닭 implements 날개있는생물체{
@Override
void 날기(){
//empty
}
void 물먹기(){
물먹기();
}
이런 경우에는 닭을 위한 인터페이스를 따로 만들어줘야 한다.
@HanSeungBeom 물먹기 메소드 정의한 인터페이스, 날기 메소드 정의한 인터페이스 따로 만들어야 한다는 말씀인가요?
@hongsukchoi 옙. 닭은 날지 못하니깐 날기 메소드가 불필요하기 때문이죠!
ISP ( 인터페이스 분리 원칙 )
정의
인터페이스 분리 원칙은 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙 인터페이스 분리 원칙은 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.
상세설명
-최소한의 인터페이스만 구현한다. → 재사용성 극대화 예를 들어 은행 관련 입금, 송금, 출금 모듈을 만들었을 경우 상황에 따라 각 모듈을 골라서 사용할 수 있어야 한다. 만약 여러 기능을 하나로 묶어두면 재사용이 어렵게 된다.
그림설명
ISP 안 된 것
ISP 된 것