设计多个类,实现多个类

时间:2013-03-12 02:29:27

标签: oop

我正在寻找一种模式来设计我的应用程序。 我有固定数量的实体类。例如。 PostEntity,ArticleEntity,DocumentEntity。它们都是抽象类'Entity'的子类。 到目前为止看起来很简单。今天我得到了一个新的要求:实体类的实现将因系统而异,这意味着,我们将有几个系统:SystemA,SystemB,SystemC。每个系统都应该实现自己的PostEntity,ArticleEntity,DocumentEntity类。

您将如何以合理的方式创建课程?

简单的方法是为每个系统创建一个文件夹,并以这种方式放置类:SystemAPostEntity,SystemAArticleEntity,SystemADocumentEntity。等等。 然后,可以使用Factory方法创建对象。例如,要获得'SystemA'的'PostEntity'对象,工厂应使用实体类型的开关/案例,并在此开关/案例中使用系统的另一个开关/案例。这种方式对我来说似乎不正确。我希望你有另一个想法。

由于

1 个答案:

答案 0 :(得分:0)

如果您必须处理多个实体,并且每个实体每个系统都有不同的行为集,那么您很可能会出现指数类爆炸。我不认为这部分是错的,它只是代表事物的方式。恕我直言,这里唯一要注意的警告是你是否开始复制​​代码。

采用子类化方法对我来说似乎没问题(即Entity>> PostEntity>> SystemAPostEntity)。然后,您可以实现Abstract Factory,为每个系统创建一个具体的工厂。你最终会得到类似的东西:

abstract class SystemFactory
{
public createPost(params);
...
}

class SystemAFactory extends SystemFactory
{
public createPost(params) 
  {
      return new SystemAPostEntity(params);
  }
}

通过这种方式,每个系统都有一个工厂,可以为它创建对象。

要考虑的一件事是,给定系统的所有实体是否共享某些共同行为(例如,它们必须携带时间戳以及与之相关的行为)。在这种情况下,您应该尝试将该常见行为分组到一个类中,并使用委派而不是复制每个SystemX*类中的代码。有些语言有Trait支持,这可能会帮助您避免编写委派代码。

HTH