View 계층

< MVC2 Model 예제 >

public class OrderMenu {
	
	private OrderController orderController = new OrderController();
	
	public void displayMainMenu() {
		/* 누적 시킬 값을 담을 변수 선언 */
		List<OrderMenuDTO> orderMenuList = new ArrayList<>();
		int totalOrderPrice = 0;
		
		Scanner sc = new Scanner(System.in);
		boolean flag = true;
		do {
			System.out.println("=========음식 주문 프로그램 ==========");
			
			List<CategoryDTO> categoryList = orderController.selectAllCategory();
			for(CategoryDTO cate : categoryList) {
				System.out.println(cate);
			}
			
			System.out.println("==================================");
			System.out.println("주문하실 카테고리 종류의 이름을 입력해 주세요");
			String inputCategory = sc.nextLine();
			
			System.out.println("============주문 가능 메뉴=============");
			/* 입력받은 값 가공 처리는 Controller에게 맡기고 가공 처리에 필요한 값을 넘긴다. */
			List<MenuDTO> menuList = orderController.selectMenuBy(inputCategory, categoryList);
			for(MenuDTO menu : menuList) {
				System.out.println(menu);
			}
			
			System.out.println("주문하실 메뉴를 선택해 주세요: ");
			String inputMenu = sc.nextLine();
			
			/* Controller에서 처리할 수 없는 가공처리는 화면단에서 처리한다.
		(반복은 화면단에서만 이뤄질 수 있음, 누적값은 화면단에서 처리) */
			int menuCode = 0;
			int menuPrice = 0;
			for(int i = 0; i < menuList.size(); i++) {
				MenuDTO menu = menuList.get(i);
				if(menu.getName().equals(inputMenu)) {
					menuCode = menu.getCode();
					menuPrice = menu.getPrice();
				}
			}
			
			System.out.println("주문하실 수량을 입력하세요: ");
			int orderAmount = sc.nextInt();
			
			totalOrderPrice += menuPrice * orderAmount;
			
			OrderMenuDTO orderMenu = new OrderMenuDTO();
			orderMenu.setAmount(menuCode);
			orderMenu.setAmount(orderAmount);
			
			orderMenuList.add(orderMenu);
			
			sc.nextLine();
			String isContinue = "";
			while(true) {
				System.out.println("계속 주문하시겠습니까?(예/아니오): ");
				isContinue = sc.nextLine();
				if("예".equals(isContinue)) {
					break;
				}else if("아니오".equals(isContinue)) {
					flag = false;
					break;
				}
			}
			
		}while(flag);
  1. View 계층에서는 속성값으로 Controller를 인스턴트로 생성한다.
  2. 주로 화면단의 역할이 크다.
  3. 데이터를 쿼리가 받아드릴 수 있는 형태로 가공하기 위해 Controller 계층으로 보냄