这是一个设计问题。
我们有杂志有副本;副本由文章组成。为了发布杂志的副本,每篇文章都需要进行验证;当所有文章都经过验证后,副本本身就可以发布。
所以我们有一个Copy类和一个Article类; Copy类有一个“发布”方法,而Article类有一个“验证”方法。
以下是我的问题:
如何设计Copy类以使其由文章组成?
我是否需要与Copy类的实例化分开实例化文章(如果是,我如何使文章成为副本的一部分),还是可以通过Copy构造函数完成文章的实例化?每个教程都涉及“组合与继承”,但在这种情况下我无法找到描述实例化的教程。
(可选),是否有一种非程序性的方式来编写Copy.publish方法,以便只有在每篇文章都经过验证后才会运行?在我看来,每篇文章的状态和副本的状态之间应该存在某种状态/同时性的相同性(当每篇文章被成功验证时,副本的状态是“can_be_published” - 但我不应该每次尝试发布副本时都必须检查每篇文章的状态。
我对Java很新,并试图“通过本书”编写这个小应用程序,而不是简单地以程序方式编写每个操作,但是我可以找到的组合信息很少。
答案 0 :(得分: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;
}