我有以下对象:L1User, L2User, L3User(都继承自User)和Document.
每个用户都可以创建文档,但根据用户类型,文档将具有不同的状态。因此,如果是L1User,将创建带有L1状态等的文档:

解决方案1
请注意,文档创建后会保存在数据库中,所以对象中自然有一个create_document(User user)方法Document。在方法主体中,我可以检查用户的类型并手动设置适当的状态。这种方法对我来说似乎不是面向对象的。
解决方案 2
好的,所以下一个方法是让所有用户实现一个通用方法(比如create_document(Document doc)),该方法将设置与用户关联的状态并将文档保存在数据库中。我的疑问是文档应该保存在它自己的类中,而不是用户。
解决方案3
所以最后的方法与上面类似,除了用户将修改后的文档对象返回给它的create_document(User user)方法并在那里执行保存。该方法的定义如下:
create_document(User user)
{
this = user.create_document(this);
this->save();
}
这对我来说似乎也不合适......
任何人都可以提出更好的方法吗?