dip

    [Java] 스프링을 왜 사용할까?(2) - OCP와 DIP 해결 By 순수 자바

    지난 포스팅에서는 OCP와 DIP가 위배 되는 경우에 대해서 알아보았습니다. 이번에는 스프링이 아닌 순수 자바로 해결해보겠습니다. 잠깐 지난 글의 클래스 다이어그램을 살펴보겠습니다. public class DriverImpl implements Driver{ Car car = new K3(); Engine engine = new Electronic(); @Override public void findOwnCarDetail() { car.findCarName(); car.findCarBrand(); engine.WayToMove(); } } DriverImpl 역할에 구현체가 직접 new 키워드로 선언 되어 있습니다. 이럴 경우 얼핏보면 OCP와 DIP를 잘 지킨 것 같지만 사실 아니라고 지난 포스팅에서 ..

    [Java] 스프링을 왜 사용할까?(1) - OCP와 DIP의 위배

    바늘과 실처럼 자바하면 바로 떠오르는 것이 있습니다. 바로 "객체 지향 언어" 라는 것입니다. "객체 지향"이란 레고라고 생각할 수 있습니다. 레고 블록들을 조립하여 우리는 무엇이든 만들 수 있습니다. 레고를 이용해서 동물원을 만들었다고 생각해보겠습니다. 동물원에는 레고로 만들어진 사자도 있고, 호랑이도 있고, 코끼리도 있고, 제가 좋아하는 판다도 있습니다. 하지만 슬프게도 더 이상 호랑이가 인기가 없어서 고릴라 레고로 바꾸고 싶습니다. 이럴 경우 우리는 쉽게 동물원에서 호랑이 레고를 빼고 고릴라 레고를 넣어주면 됩니다. 여기서 호랑이, 고릴라가 객체가 되는 것입니다. 호랑이를 뺀 다고 해서 기존에 있던 사자나 판다 레고는 전혀 영향이 없습니다. 만약 라이거 레고를 만들고 싶다고, 호랑이와 사자를 마구잡..