행위 패턴중 상태 패턴에 대해서
상태 패턴(state pattern)은 객체 지향 방식으로 상태 기계를 구현하는 행위 소프트웨어 디자인 패턴이다.
위키에 정의된 상태패턴이다.
여러분과 같이 필자도 무슨 말인지 알듯 말듯 하다.
개발관련 용어들의 정의를 글이나 말로 들어보면 전혀 이해되지 않는 경우가 많다.
이런것이 개발을 이해하기 어렵게 만드는 이유중 하나라고 생각한다.
온라인 쇼핑몰에서 내가 원하는 티셔츠를 장바구니에 담는다.
장바구니에 담긴 상품을 구매하기 버튼을 누른다.
상품 재고가 있으면 카드결제를 진행하고 재고가 없으면 구매 프로세스는 종료된다.
카드 정보를 입력하여 결제를 요청한다.
결제 정보가 맞고 잔고가 있으면 결제가 완료되고 그렇지 않으면 구매 프로세스는 종료된다.
결제가 완료되면 상품이 준비되고 배송을 통해 집으로 배달이 된다.
각각의 과정에서 행위에 대한 결과가 참이면 다음단계를 진행하고 거짓이면 종료된다.
https://github.com/fbeline/design-patterns-JS/blob/master/src/behavioral/state/state_es6.js
위의 이미지는 상태 패턴의 예제 코드이다.
주문 과정의 상태에 따라 WaitingForPayment, Shipping, Delivered의 과정이 진행되는 것을 볼 수 있다.
상태 패턴은 코드내의 조건문들을 대체하려는 목적으로 사용되는 것을 알 수 있다.