[JAVA] 컬렉션 프레임워크

12·2026년 3월 12일

자바

목록 보기
7/8

의존 역전 원칙 - DIP (Dependency Inversion Principle)

어떤 Class를 참조해서 사용해야하는 상황이 생긴다면, 그 Class를 직접 참조하는 것이 아니라 그 대상의 상위 요소(추상 클래스 or 인터페이스)로 참조하라는 원칙

Stream이 데이터 처리, 컬렉션 프레임워크는 데이터저장에 초점을 두고 있다.

import java.util.*;

public class IteratorDemo {
	public static void main(String[] args) {
/*SOLID의 원칙중 DIP (Dependency Inversion Principle)
 을 지키지 않은 예 */
	ArrayList<Integer> list = new ArrayList<>();	
	list.add(10);
	list.add(20);
	list.add(30);	//ArrayList는 addFirst 없음
	System.out.println(list);	//[10, 20, 30]

만약 ArrayList를 linekdlist로 바꿔야한다면?

LinkedList<Integer> list1 = new LinkedList<>();	
	list1.addFirst(10);
	list1.addFirst(20);	
	list1.addFirst(30);	
	System.out.println(list1);	//[30,20,10]
    

만약 ArrayList로 했는데 LinkedList로 바꿔야한다면..
addFirst가 없으니까 안되므로 구체적인 객체에 의존하면 안된다는것

/*SOLID의 원칙중 DIP (Dependency Inversion Principle)
 을 지킨 예 */
	Collection<String> good = new LinkedList<>(); //new ArrayList로해도 됨
	good.add("a");
	good.add("b");
	good.add("c");
	System.out.println(good);
	}
}

Collection 사용시 부모에도있고 자식에도 있는 공통된 메소드를 호출하기때문에
정책변경시 문제없음.
구체적인 클래스가 아니라 인터페이스에 의존하게 짜야한다.

0개의 댓글