객체는 인터페이스를 사용해 참조하라 이전에 매개변수 타입으로 클래스가 아닌 인터페이스를 사용하라고 하였다, 이를 확장하면 객체는 클래스가 아닌 인터페이스로 참조하라고 할 수 있다 즉 적합한 인터페이스만 있으면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라. // 좋은 예, 인터페이스를 타입으로 사용 Set itemSet = new LinkedHashSet(); // 나쁜 예, 클래스를 타입으로 사용 LinkedHashSet itemSet = new LinkedHashSet(); 인터페이스를 타입으로 사용하는 습관을 길러두면 프로그램이 훨씬 유연해진다, 나중에 구현 클래스를 교체하고자 한다면 그저 새 클래스의 생성자(혹은 다른 정적 팩터리)를 호출해주기만 하면 된다. Set i..