Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Heap
- 단일책임원칙
- Spring SOLID
- Spring
- Java
- stack메모리
- Stack
- Runtime data Area
- Open Closed Principle
- 스택
- 개방폐쇄원칙
- 자료구조
- 개방-폐쇄 원칙
- 자바
- 자바 heap
- Class Loader
- Execution Engine
- 단일 책임 원칙
- solid
- Data Structure
- 실행 엔진
- CS
- 스택메모리
- Single Responsibillity Principle
- JVM
- pc register
- 의존성 역전 원칙
- 객체지향
- Native Method Stack
- 객체지향 설계 5원칙
Archives
- Today
- Total
Juuunew 살아남기
[Spring] 객체지향 설계원칙 (SOLID) - 인터페이스 분리 원칙 ISP 본문
인터페이스 분리 원칙 - ISP
- 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
- 인터페이스가 명확해지고, 대체 가능성이 높아진다.
- 분리하면 정비 인터페이스 자체가 변경되어도 운전자 클라이언트에 영향을 주지 않음
클라이언트의 관심사에 따라 알맞게 인터페이스를 분리해주어야 하는 인터페이스 분리 원칙은 어떻게 보면 단일 책임 원칙과 상당히 유사하다고 생각된다.
단일 책임 원칙과 개방-폐쇄 원칙에서 예시로 들었던 서비스 센터를 다시 한번 예시로 들어보려 한다.
public interface ServiceCenter {
/**
* 노트북
*/
// 키보드
void keyboard();
// 모니터
void monitor();
// 트랙패드
void trackpad();
/**
* 스마트폰
*/
// 액정
void display();
// 볼륨업 키
void volumeUp();
// 볼륨다운 키
void volumeDown();
// 홀드 키
void holdKey();
}
서비스센터 인터페이스에는 현재 노트북과 스마트폰 관련된 수리 기능들이 존재한다.
노트북 서비스센터 클래스가 구현체로써 해당 서비스센터 인터페이스를 구현을 한다면
public class LaptopServiceCenter implements ServiceCenter{
@Override
public void keyboard() {
System.out.println("노트북 키보드 수리");
}
@Override
public void monitor() {
System.out.println("노트북 모니터 수리");
}
@Override
public void trackpad() {
System.out.println("노트북 트랙패드 수리");
}
@Override
public void display() {
}
@Override
public void volumeUp() {
}
@Override
public void volumeDown() {
}
@Override
public void holdKey() {
}
}
현재 스마트폰 서비스센터의 액정 수리 기능이 엔지니어의 부재로 문을 닫아두었다고 생각을 해보자.
나는 노트북 수리 서비스를 받기 위해 방문하였는데 전혀 관계가 없는 스마트폰 서비스센터의 기능 부재로
노트북 서비스까지 받지 못하는 상황이 발생한다.
public interface LaptopServiceCenter {
/**
* 노트북
*/
// 키보드
void keyboard();
// 모니터
void monitor();
// 트랙패드
void trackpad();
}
public interface SmartphoneServiceCenter {
/**
* 스마트폰
*/
// 액정
void display();
// 볼륨업 키
void volumeUp();
// 볼륨다운 키
void volumeDown();
// 홀드 키
void holdKey();
}
이처럼 클라이언트의 관심사에 맞게 인터페이스를 분리해주어야 하는 것이 인터페이스 분리 원칙이다.
💡 공부 중 정리하는 내용이므로 부족한 부분이 있을 수 있습니다.
💡 참고자료
'Framework > Spring' 카테고리의 다른 글
[Spring] 스프링 컨테이너, 제어의 역전(IoC), 의존관계주입(DI) (0) | 2022.12.23 |
---|---|
[Spring] 객체지향 설계원칙 (SOLID) - 의존성 역전 원칙 DIP (1) | 2022.12.21 |
[Spring] 객체지향 설계원칙 (SOLID) - 리스코프 치환 원칙 LSP (0) | 2022.12.11 |
[Spring] 객체지향 설계원칙 (SOLID) - 개방-폐쇄 원칙 OCP (0) | 2022.12.08 |
[Spring] 객체지향 설계원칙 (SOLID) - 단일 책임 원칙 SRP (1) | 2022.12.07 |