2011-07-23 36 views
3

我在我的程序中有一个名为Page的类。它有10个属性,但在某些时候,只需要3个属性(RawPage),而在其他点上,需要全部或几乎所有的属性(ProcessedPage)。什么更好:单个类的某些属性未填充或多个类的属性已填充?

更好我只有一个类具有所有属性或将这些类拆分为两个类,每个类都需要一个类?

编辑:处理的属性是Page中的新属性,不会覆盖任何属性。

回答

4

我怀疑有人会建议使用此继承,但我不会......这听起来像你逻辑创建一个“加工页的”从“原始页面”(经处理) - 那么为什么不模型,可以完全像那样?

class ProcessedPage 
{ 
    private final RawPage source; 

    // Other stuff - the results of the processing 
} 

class RawPage 
{ 
    // The data you need here 

    public ProcessedPage process(...) 
} 

当一个类是信息仅供有时有效/所需/相关,它最终被相当棘手的工作,特别是随着系统的发展规模。有了更明确的模型,你可以做潜在结束了一些重复,但你的班最终有一个更好的明确的生活目的,而不是患多种人格障碍。

注意,我没有ProcessedPageRawPage一个子类 - 因为我不想像你通常要治疗ProcessedPage一个RawPage,潜在的再处理它。你可以可能希望有一个它们都实现的通用接口,当然这不包括process方法,但这有些不同。

0

答案是否依赖。如果属性不相关,可以进行分类,那么将当前类分成两个是有意义的。

但是,如果属性具有泛化 - 特化关系,那么你可以有一个类为基础,把属性的其余部分成不同的班组长这是第一类

的扩展词shash

0

是他们完全相同的属性?有时您可能在逻辑数据范围中具有相同名称但不同上下文含义的属性。你的情况是这样吗?如果没有,那么我会说去一个类,除非有你想要封装不同的行为与您的ProcessedPage不同的RawPage相关联。