0

这是一个设计问题。

我们有有副本的杂志;副本由文章制成。为了出版杂志的副本,每篇文章都需要经过验证;当所有文章都经过验证后,副本本身就可以发布。

所以我们有一个 Copy 类和一个 Article 类;Copy 类有一个“publish”方法,Article 类有一个“verify”方法。

以下是我的问题:

  1. 如何设计 Copy 类以使其由 Articles 组成?

  2. 我是否需要与 Copy 类的实例化分开实例化文章(如果是,我如何使文章成为副本的一部分),或者文章的实例化可以由 Copy 构造函数完成吗?每个教程都涉及“组合与继承”,但在这种情况下我找不到描述实例化的教程。

  3. (可选)是否有编写 Copy.publish 方法的非程序性方法,以便仅在每篇文章都经过验证时才运行?在我看来,每篇文章的状态和副本的状态之间应该存在某种状态/同时性(当每篇文章都已成功验证时,副本的状态是“can_be_published”——但我不应该必须检查每篇文章的状态,每次尝试发布副本时)。

我对 Java 相当陌生,并试图“按书”编写这个小应用程序,而不是简单地以程序方式编写每个操作,但我能找到的关于组合的信息令人惊讶地少。

4

1 回答 1

0

1.

class Copy {
  private List<Article> articles = new ArrayList<Article>();
  public addArticle(Article article) {
    this.articles.add(article);
  }
}

2.

是的,您可以使用上述addArticle方法。但是,如果您想强制Copy最初拥有所有文章,那么您可以将文章列表传递给它的构造函数。

3.

class Copy {
  public boolean canPublish() {
    for (Article a: articles)
      if (!article.isVerified())
        return false;
  }
  return true;
}
于 2013-10-17T17:41:12.037 回答