我有以下對象上文獻狀態:L1User
,L2User
,L3User
和Document
(都來自User
繼承)。
每個用戶都可以創建文檔,但取決於用戶類型,文檔將具有不同的狀態。所以,如果這是L1User
,該文件將與L1
狀態等創建:依賴用戶類型對象
解決方案1
請注意,後創建的文件,它將被保存在數據庫中,所以在Document
對象中有一個方法create_document(User user)
應該很自然。在方法體中,我可以檢查哪種類型是用戶,並手動設置適當的狀態。這種方法對我來說似乎不是OOP。
解決方案2
好了,接下來的辦法是讓所有用戶實現一個共同的方法(比如create_document(Document doc)
)將設置與用戶相關聯的狀態,並保存該文檔在數據庫中。我的疑問是,文檔應該保存在自己的類中,而不是用戶。
溶液3
所以最終的方法將與上述類似,不同之處在於用戶將返回修改的文檔對象到它的create_document(User user)
方法和保存將在那裏進行。該方法的定義是這樣的:
create_document(User user)
{
this = user.create_document(this);
this->save();
}
它也似乎並不正確,我...
任何人都可以提出一個更好的辦法?
感謝您的輸入。我決定採用解決方案#2,因爲我還有其他方法可以實現,並且對所有這些方法都遵循一種通用樣式更容易。 – matino