我的程序中有一个名为Page的类。它有10个属性,但在某些时候,只需要3个属性(RawPage),而在其他方面,需要所有或几乎所有的属性(ProcessedPage)。
更好我只有一个具有所有属性的类,或者将这些类拆分为两个类,每个类都需要一个?
编辑:已处理的属性是页面中的新属性,不会覆盖任何属性。
答案 0 :(得分:4)
我怀疑有人会建议在这里使用继承,但我不会......这听起来像是从“原始页面”(通过处理)逻辑创建“处理过的页面” - 所以为什么不把它完全模仿呢?
class ProcessedPage
{
private final RawPage source;
// Other stuff - the results of the processing
}
class RawPage
{
// The data you need here
public ProcessedPage process(...)
}
当一个类的信息只有有时有效/需要/相关时,它最终会变得非常棘手,特别是当系统的大小增加时。使用更明确的模型,你可能潜在地最终会有一些重复,但你的课程最终会有更明确的生活目标,而不是患有多重人格障碍。
请注意,我没有使ProcessedPage
成为RawPage
的子类 - 因为我不认为你通常想要对待ProcessedPage
as a RawPage
,可能会重新处理它。 可能希望拥有一个他们都实现的通用接口,当然不包括process
方法,但这有点不同。
答案 1 :(得分:0)
答案取决于它。如果属性不相关,可以进行分类,那么将当前类拆分为两个是有意义的。
但是,如果属性具有泛化 - 特化关系,那么您可以将一个类作为基础,并将其余属性放入不同的类中,这是第一个类的扩展
词shash
答案 2 :(得分:0)
它们是完全相同的属性吗?有时,您可能在逻辑数据范围中具有相同名称但具有不同上下文含义的属性。您的情况就是这种情况吗?如果没有那么我会说去一个类,除非你想要封装的与RawPage相关的行为与你的ProcessedPage不同。