객체지향 설계 5원칙
- SRP(Single Responsibility Principle) - 단일 책임 원칙
- OCP(Open-Closed Principle) - 개방-폐쇄 원칙
- LSP(Liskov Substitution Principle) - 리스코프 치환 원칙
- ISP(Interface Segregation Principle) - 인터페이스 분리 원칙
- DIP(Dependency Inversion Principle) - 의존관계 역전 원칙
이번에 알아볼 것은 SOLID의 I인 ISP(Interface Segregation Principle) - 인터페이스 분리 원칙에 대해 알아볼 것이다.
클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다.
큰 덩어리의 인터페이스들을 구체적이고 작은 단위들로 분리시킴으로써 클라이언트들이 꼭 필요한 메서드들만 이용할 수 있게 한다.
- WIKIPEDIA -
ISP 예시
interface PowerSwitch {
String powerOn();
String powerOff();
}
interface FanSwitch {
String number1();
String number2();
String number3();
String spin();
}
class NumberThreeSpinFan implements PowerSwitch, FanSwitch {
@Override
String powerOn(){
return "Power On";
}
@Override
String powerOff(){
return "Power Off";
}
@Override
String number1(){
return "Fan set number 1";
}
@Override
String number2(){
return "Fan set number 2";
}
@Override
String number3(){
return "Fan set number 3";
}
@Override
String spin(){
return "Fan set spin";
}
}
대충 스위치와 선풍기로 예시를 만들어 보았다.
먼저 FanSwitch와 PowerSwitch를 인터페이스로 분리를 해서 ISP를 지키도록 했다.
PowerSwitch 인터페이스는 전원을 켰다·껐다할 수 있는 모든 제품에서 사용할 수 있고 FanSwitch는 선풍기에서 사용할 수 있게 했다.
그래서 NumberThreeSpinFan(3단 회전 선풍기)에 상속을 받아 오버라이드하게 했다.
이렇게 인터페이스를 세분화한 기능으로 분리하는 것이 ISP라고 생각한다.
느낀점
인터페이스 분리 원칙은 조금 이해하기가 쉬웠다. 다만 예로 든 선풍기를 영어로 표현하기 어려웠을 뿐이다.
이렇게 분리를 계속하게 되면 하나의 인터페이스에 하나의 메소드만 들어갈 것 같은데 설계할때 주의해야겠다.
'TIL > 잡학다식' 카테고리의 다른 글
[잡학다식] RESTful API - API (0) | 2022.07.28 |
---|---|
[잡학다식] 의존관계 역전 원칙(DIP: Dependency Inversion Principle) (0) | 2022.07.22 |
[잡학다식] 리스코프 치환 원칙(LSP: Liskov Substitution Principle) (0) | 2022.07.13 |
[잡학다식] 개방-폐쇄 원칙(OCP: Open-Closed Principle) (0) | 2022.07.11 |
[잡학다식] 단일 책임 원칙(SRP: Single Responsibility Principle) (0) | 2022.07.10 |