본문 바로가기
개인 프로젝트/kiosk-project

kiosk 구조 짜기 <1>

by pon9 2024. 11. 23.

키오스크를 만드는 과제를 받았다. 이번에도 도전 과제에 도전한다. 나 스스로 도전하고 싶은 것도 있다.

그것은 디자인 패턴을 "의도 하에" 적용하는 것이다.

 

일단 나는 엽떡을 좋아하니까 햄버거 말고 엽떡으로 개발하려고 한다. 필수 기능만 구현하면 메뉴는 상관없지 않을까?

디자인 패턴은 이렇게 사용하기로 정했다.

 

메뉴: factory 패턴과 enum을 결합한다. enum으로 메뉴 이름이나 가격 등을 관리하고, 팩토리를 통해 동적으로 객체를 생성한다면 좋은 시너지가 날 것이다. 메인 메뉴 말고도 사이드 메뉴도 동일한 구조로 관리가 가능하다.

 

메뉴 추가: builder 패턴을 활용해서 메인메뉴와 사이드메뉴를 동적으로 추가한다.

 

주문 상태: '메뉴 선택, 장바구니 추가, 주문 완료' 등으로 이루어지는 주문 단계의 상태를 객체로 분리해서, 상태 전환 시 동작을 상태 클래스에 위임한다. 각각의 상태 클래스는 싱글톤 패턴을 사용해서, 하나의 인스턴스만 담는다.

 

할인 적용: 단순하고 정적인 %할인만 적용할 것이기에 enum+bifunction이 실용적이다.

저번 계산기 때는 하나 하나 쌓아올렸다면(사실 청사진이 있긴 했지만), 이번에는 구조를 먼저 짜봤다. 아으 머리아프다..ㅋㅋ

Exception : 예외 처리를 담당한다.

Main : 키오스크의 시작과 실행종료를 담당한다.

Factory : 팩토리패턴. 객체 생성 로직을 캡슐화해준다

Item : 사용자가 주문한 Item정보(수량, 맛)가 여기에 들어온다.

Type : 주문할 수 있는 item 들의 정보와 설명, 가격을 enum에 담았다.

Coupon : coupon을 enum에 담았다.

Order : 완성된 장바구니에 담긴 객체다.
OrderBuilder : Order 객체를 단계적으로 생성해서 완성시켜준다.

State : 상태 클래스들

또 일을 크게 벌렸는데..일단.. 먼저 이렇게 짜놓고 세부구현을 잘 하는 법도 터득해보자.

'개인 프로젝트 > kiosk-project' 카테고리의 다른 글

Trouble shooting <4>  (0) 2024.11.25
Builder pattern<3>  (1) 2024.11.24
State pattern <2>  (0) 2024.11.24