토이 프로젝트 Java 버전 1의 회고이다.
프로젝트 이름은 "여행 여정을 기록과 관리하는 SNS 서비스"이다.
View Controller Model 각 계층간의 의존성을 약화시키고 각 계층들이 독립적으로 기능할 수 있도록 구현한다.
하나의 View와 하나의 Controller 안에 모든 기능들을 구현하였다.
각 메소드 간의 중복되는 코드가 많았고, Controller는 View에 강하게 결속되고 있는 상태였다.
View를 ItemView라는 인터페이스를 생성하고, item별로 각 하위 구현체들 구현하였다.
(ex, TripView ItineraryView ⊂ ItemView)
기존의 Controller는 하위모듈인 각 View에 의존하고 있었지만, 인터페이스 구현으로 상위레벨인 ItemView에 의존하도록 하였다.
TravelApp이 여러개의 하위모듈 컨트롤러에 의존하지 않고, 컨트롤러 간의 중복 코드를 줄이기 위해 FrontController 패턴을 사용하였다.
Controller라는 인터페이스를 생성하여, FrontController 내에서는 상위모듈인 Controller 인터페이스에만 의존하는 방식으로 구현하였다.
어떻게하면 각 계층별로 의존성을 약화시키고, 어떻게 하면 각 계층에서는 다른 계층의 로직을 알 필요 없도록 만들 수 있는가에 초점을 두었다.
순수한 Java로 실제 Spring MVC에서 사용하고 있는 FrontController 패턴을 응용하면서 FrontController 패턴에 대해 다시 한번 알 수 있었다.