Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Geon

SOLID - ISP 본문

OOP

SOLID - ISP

jgkim1008 2022. 3. 27. 16:06

Interface Segregation Priciple ( 인터페이스 분리 법칙)

클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 말아야 한다.

왜 사용하지 않는 메서드에 의존하지 말아야 할까?

  • 불필요한 빌드가 유발될수 있다.

protocol 세탁할수있는 {
    func 세탁하기() 
    func 건조하기()
}


struct LG세탁기: 세탁할수있는 {
    func 세탁하기() {
        print("세탁하기")
    }

    func 건조하기() {
        print("건조하기")
    }


}

struct 삼성세탁기: 세탁할수있는 {
    func 세탁하기() {
        print("세탁하기")
    }

    func 건조하기() {
    }
}

삼성세탁기는 건조하기 기능이 없을수도 있다. 이럴떄는 기능이 없지만 protocol을 채택하고 있기때문에 건조하기 메서드를 강제해야 한다.

ISP 적용


protocol 세탁할수있는 {
    func 세탁하기() 
}

protocol 건조할수있는 {
    func 건조하기()
}

typealias 올인원세탁기 = 세탁할수있는 & 건조할수있는


struct LG세탁기: 올인원세탁기 {
    func 세탁하기() {
        print("세탁하기")
    }

    func 건조하기() {
        print("건조하기")
    }


}

struct 삼성세탁기: 세탁할수있는 {
    func 세탁하기() {
        print("세탁하기")
    }
}

 
큰 인터페이스를 작은 인터페이스로 분리하여 프로그래밍 하는것이 POP 이다.

'OOP' 카테고리의 다른 글

SOLID - DIP  (0) 2022.03.27
SOLID - OCP  (0) 2022.03.25
SOLID - SRP  (0) 2022.03.25
SOLID 원칙  (0) 2022.03.25