state object

Post는 공개 메서드만 보이고 상태 전환 규칙은 State 객체가 숨긴다

초안, 검토, 게시 규칙은 비공개 상태 객체가 맡고 사용자는 Post의 제한된 메서드만 호출한다.

01 Draftadd_text 가능

content는 비공개

02 PendingReviewrequest_review 후

승인 대기

03 Publishedapprove 후

content 공개

04 Post API상태별 규칙 감춤

잘못된 순서 차단

구분의미판단
공개 표면Post 메서드사용자가 호출
전환 규칙State trait 구현내부에서 교체
불변식게시 전 content 숨김상태 객체가 보호

핵심 상태 패턴은 enum을 피하는 것이 아니라 상태별 규칙을 외부 API에서 숨기는 것이다.