@@ -0,0 +1,106 @@
+package store.view;
+
+import camp.nextstep.edu.missionutils.Console;
+import java.util.ArrayList;
+import java.util.List;
+import store.constants.InputPrompts;
+import store.domain.Cart;
+import store.domain.Products;
+import store.domain.Purchase;
+import store.utils.Split;
+import store.validator.InputValidator;
+
+public class InputView {
+
+    public Cart readItem(Products products) {
+        while(true) {
+            try {
+                String input = getPurchaseInput();
+                InputValidator.validateInput(input);
+                List<String> purchase = Split.squareBracketsSpliter(Split.commaSpliter(input));
+                return validateReadItem(purchase, products);
+            } catch (IllegalArgumentException e) {
+                System.out.println(e.getMessage());
+            }
+        }
+    }
+
+    private Cart validateReadItem(List<String> purchase, Products products) {
+        validatePurchase(purchase);
+        Cart cart = getCart(purchase);
+        InputValidator.validateHasProduct(cart, products);
+        InputValidator.validateSufficientStock(cart, products);
+        return cart;
+    }
+
+    public String checkPromotionCountAdd(Purchase purchase) {
+        while(true) {
+            try {
+                System.out.printf(InputPrompts.PROMOTION_QUANTITY_ADD.getPrompt(), purchase.getName());
+                String answer = Console.readLine();
+                InputValidator.validateAnswer(answer);
+                return answer;
+            } catch (IllegalArgumentException e) {
+                System.out.println(e.getMessage());
+            }
+        }
+    }
+
+    public String checkPromotionSaleNotAccept(Purchase purchase, int count) {
+        while(true) {
+            try {
+                System.out.printf(InputPrompts.NOT_ENOUGH_PROMOTION_QUANTITY.getPrompt(), purchase.getName(), count);
+                String answer = Console.readLine();
+                InputValidator.validateAnswer(answer);
+                return answer;
+            } catch (IllegalArgumentException e) {
+                System.out.println(e.getMessage());
+            }
+        }
+    }
+
+    public String checkMemberShipSale() {
+        while(true) {
+            try {
+                System.out.println(InputPrompts.MEMBERSHIP_DISCOUNT.getPrompt());
+                String answer = Console.readLine();
+                InputValidator.validateAnswer(answer);
+                return answer;
+            } catch (IllegalArgumentException e) {
+                System.out.println(e.getMessage());
+            }
+        }
+    }
+
+    public String checkMorePurchase() {
+        while(true) {
+            try {
+                System.out.println(InputPrompts.MORE_PURCHASE.getPrompt());
+                String answer = Console.readLine();
+                InputValidator.validateAnswer(answer);
+                return answer;
+            } catch (IllegalArgumentException e) {
+                System.out.println(e.getMessage());
+            }
+        }
+    }
+
+    private String getPurchaseInput() {
+        System.out.println(InputPrompts.ENTER_PURCHASE_PRODUCTS.getPrompt());
+        String input = Console.readLine();
+        return input.replaceAll(" ", "");
+    }
+
+    private Cart getCart(List<String> purchase) {
+        List<Purchase> products = new ArrayList<>();
+        for (String productInput : purchase) {
+            List<String> buyInfo = Split.hyphenSpliter(productInput);
+            products.add(new Purchase(buyInfo.get(0), buyInfo.get(1)));
+        }
+        return new Cart(products);
+    }
+
+    private static void validatePurchase(List<String> purchase) {
+        InputValidator.validatePurchaseForm(purchase);
+    }
+}

리뷰: while, try-catch 코드가 동일한 구조로 여러 곳에서 중복되어 쓰이고 있는 것 같아요!
함수형 인터페이스를 활용하면 코드 중복을 최소화할 수 있을 것 같은데, 제가 학습한 내용을 아래 블로그에 게시해두었으니 관심있다면 한 번 읽어보세요! 😄 

[함수형 인터페이스와 표준 API](https://velog.io/@songsunkook/%ED%95%A8%EC%88%98%ED%98%95-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%EC%99%80-%ED%91%9C%EC%A4%80-API)