DI : 객체 관의 관계를 느슨하게 하는 방법
특징
MenuController클래스내부에 MenuService 인터페이스를 생성하고 생성자 파라미터로 인터페이스를 넣고 MenuController의 메서드 getMenus 에 반환값을 MenuService 인터페이스의 메서드 getMenuList로 함으로써 MenuController가 MenuService 인터페이스를 의존하게 되었다.
AppConfigure 클래스에 menuController라는 메서드를 만들고 반환값을 menuServiceStub메서드를 파라미터로 가지는 MenuController 객체를 반환 하기 때문에 CafeClient에서 AppConfigure 를 인스턴스화 한 후 appConfigure.menuController()를 이용해 controller에 담고 controller.getMenus()로 menuList에 메뉴 목록을 담았다.
이렇게 DI를 했을 때 장점은 메뉴 수정사항이나 추가 사항이 생겼을 때 전부 이름을 바꿔 줄 필요 없이 수정사항만 건드려도 메서드가 객체를 반환 하기 때문에 따로 이름을 바꿀 필요가 없다.
DI를 잘 활용해야 한다고 들었다. 직접 사용해보니 DI를 적용하기전과 후의 수정하는 방면에서의 편리성이 엄청 큰 차이가 나는거 같다. 물론 아직은 적응이 잘 안돼서 힘들긴 하지만 계속 연습하면서 익숙해 져야 할 것 같다.