Java - MVC(gradle) 2

김정현·2024년 6월 3일
0

포트폴리오

목록 보기
3/8

라우터 - locator - controller 관계

라우터는 locator를 객체화 시키고 (싱글톤)

locator에서 재정의한 find 메서드를 실행시킨다.


find 메서드는 controller 객체를 반환하며,
하위 enum의 상수에 따라서
switch문으로 controller를 객체화 한다.

controllers는 해쉬맵형태의 객체이다.

.get(menu) 를 함으로써 저장되어있는 Controller 객체를 가져올 수 있다.

controller객체를 생성하고 해쉬맵의 Controller 객체를 담는 곳에 담는다. (menu도)

그리고 반환한다.


여기까지가 router에서 실행한 find 메서드를 호출하는 과정이다.
이렇게 controller를 반환받고
해당 controller.run을 실행한다.


메인쪽에서 한번에 관리하기

(하위 메뉴를 구성할 것이 아니라면 locater를 안 써도됨.)

기존

public class MainRouter implements Router 에서

위 방식으로 각 메뉴의 locater를 모두 객체화 한후
해당 locater의 find 메서드를 실행하여 controller 객체를 배정한 것과 달리,


메인쪽에서 관리

public class MainRouter implements Router, Startable 에서

MainControllerLocator 한 개의 클래스만 객체화 한다.

public class MainControllerLocator extends AbstractControllerLocator 에서

이런 식으로 싱글톤 패턴으로 controller 객체를 생성한다.
그후 controller 객체를 반환하며 MainRouter에서 해당 객체를 사용하여 run()을 실행한다.

0개의 댓글