我有以下对象: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();
}
这对我来说似乎也不合适......
任何人都可以提出更好的方法吗?