State 表達的是形態,而 Status 表達的是從一種形態轉換成另一種形態的過程中,那些有顯著特征的離散中間值。
還是說那個旅館房間的例子,一個房間可以是婚房、普通房、豪華總統房,這些都是用 State 來表達。把一個普通房改造成豪華總統房,這個過程就有設計、材料准備、工人就位、施工、驗收等步驟,這個時候就用 Status 來表達。
那么,區分點在哪?區分點就在於一個房間當用State 描述時,它是個彼此獨立的枚舉值,可以沒有前后順序的在婚房、普通房、豪華總統房之間來回轉換。而當使用 Status 時,是存在前后狀態依賴關系的一個變化量,不能沒有做設計就施工,也不能沒施工就驗收。
所以,State 和 Status 的核心區別,就是它們的枚舉值之間是否有依賴關系,沒有依賴關系的用 State,有依賴關系的用 Status。