對於簡單對象,通常很容易擁有「狀態」屬性,該屬性是字符串並可存儲在數據庫中。例如,設想一個用戶類。它可能處於不活躍,未經驗證和積極的狀態。這個可能被跟蹤兩個布爾值 - 「活動」和「驗證」 - 但它也可以使用一個簡單的狀態機從非活動狀態轉換爲未驗證活動狀態,同時將當前狀態存儲在該「狀態」屬性中。很常見,對嗎?堅持具有許多布爾屬性的對象的狀態
但是,現在想象一個具有更多布爾屬性的類,更重要的是,它們可以有很多組合。例如,可能被破壞,丟失,停用,過時等的事情。現在,在單個「狀態」屬性中跟蹤狀態變得更加困難。我猜這是一個非確定性有限自動機或狀態機。我真的不想存儲諸如「inactive_broken」和「active_missing_outdated」等狀態,等等。
我所想到的最好的結果是同時具有「狀態」屬性和存儲某種超狀態 - 「可用「vs」不可用「,在這種情況下 - 和每個布爾值。這樣,我可以在轉換時擁有類似警衛的方法。
有沒有其他人遇到這個問題,想出一個很好的解決方案來跟蹤狀態?