습관적으로 자바 Collection Framework의 자료구조를 사용할 때
public static void main(String[] args) {
LinkedList<String> linkedList = new LinkedList<>();
}
위와 같이 사용을 했었다.
자료구조를 직접 만들며 공부하던 중 한가지 의문이 생겼다.
왜 List<String> 으로 선언을 하면 안되는건가?
대부분의 예제 설명에서 LinkedList로 선언을 하고 있고 List로는 선언을 하고 있지 않다.
과연 LinkedList 와 List 중 어떤걸 선언하는게 더 바람직한 사용법일까?
결론 부터 말하자면 List로 선언하는게 더 바람직한 사용법이다.
왜냐하면 SOLID 원칙 중 D 의존 역전 원칙 - DIP (Dependency Inversion Principle)에 의해 인터페이스를 의존하는 방법이 옳기 때문이다.
만약 위와 같은 코드에서 LinkedList 구현체가 아닌 ArrayList 구현체를 사용하기 위한다면 리턴 타입 과 같은 소스코드 전반적인 수정 할 필요가 생기게 됩니다.
하지만
public static void main(String[] args) {
List<String> list = new LinkedList<>();
}
위와 같은 코드에서는 LinkedList를 ArrayList로 수정하게 된다면 소스 코드를 그대로 사용 할 수 있기 때문이다.
위와 같은 방식으로 사용하는 것을 업스케일링이라고 합니다.
업스케일링이란 상위 개념(부모)을 생성하고 하위 개념(자식)을 할당하는 것을 의미 합니다.
'Java' 카테고리의 다른 글
Spring Cloud GateWay API 인가 서버 구현 (0) | 2024.06.16 |
---|---|
Java Spring WebFlux + MySQL CRUD 예제 (0) | 2024.06.16 |
Spring Cloud Gateway 기본적인 사용 방법 (0) | 2024.06.12 |
자바 프로세스 메모리 증가 (0) | 2024.06.01 |
자바 멀티 스레드 프로그래밍 (0) | 2024.05.20 |