bumdream / morning_study

1 stars 0 forks source link

4일차 SOLID - ISP #4

Open bumdream opened 6 years ago

hongsukchoi commented 6 years ago

ISP ( 인터페이스 분리 원칙 )

정의

인터페이스 분리 원칙은 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙 인터페이스 분리 원칙은 큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.

상세설명

-최소한의 인터페이스만 구현한다. → 재사용성 극대화 예를 들어 은행 관련 입금, 송금, 출금 모듈을 만들었을 경우 상황에 따라 각 모듈을 골라서 사용할 수 있어야 한다. 만약 여러 기능을 하나로 묶어두면 재사용이 어렵게 된다.

그림설명

image

ISP 안 된 것

image

ISP 된 것

bumdream commented 6 years ago

ISP (인터페이스 분리 원칙)

ISP 적용 예시

interface 날개있는생물체{
    void 날기();
    void 물먹기();
}

class 비둘기 implements 날개있는생물체{
@Override
void 날기(){
  날기();
}
void 물먹기(){
  물먹기();
}

class 닭 implements 날개있는생물체{
@Override
void 날기(){
  //empty 
}
void 물먹기(){
  물먹기();
}

이런 경우에는 닭을 위한 인터페이스를 따로 만들어줘야 한다.

hongsukchoi commented 6 years ago

@HanSeungBeom 물먹기 메소드 정의한 인터페이스, 날기 메소드 정의한 인터페이스 따로 만들어야 한다는 말씀인가요?

bumdream commented 6 years ago

@hongsukchoi 옙. 닭은 날지 못하니깐 날기 메소드가 불필요하기 때문이죠!