Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我怎样才能通知a";书;类,即“a”;第页“;课程已经结束,所以书可以翻到下一页?_Java_Oop_Object - Fatal编程技术网

Java 我怎样才能通知a";书;类,即“a”;第页“;课程已经结束,所以书可以翻到下一页?

Java 我怎样才能通知a";书;类,即“a”;第页“;课程已经结束,所以书可以翻到下一页?,java,oop,object,Java,Oop,Object,这些不是真正的课程,但这是我能想出的最好的描述我奋斗的课程 我使用的类有:图书馆、书籍、网页 library类管理(添加/删除)所有书籍。 book类包含一组页面。本书可以随时打开,并且本书知道当前处于活动状态的页面。 page类知道何时到达页面的末尾,因此知道何时转到下一页。但是,翻页方法位于Book类中 我怎样才能做到这一点?Page类如何与Book类通信?我觉得在Page类中调用一个方法有违目的。例如,Page#turn将调用Library#getBook#turnPage page类是一

这些不是真正的课程,但这是我能想出的最好的描述我奋斗的课程

我使用的类有:图书馆、书籍、网页

library类管理(添加/删除)所有书籍。 book类包含一组页面。本书可以随时打开,并且本书知道当前处于活动状态的页面。 page类知道何时到达页面的末尾,因此知道何时转到下一页。但是,翻页方法位于Book类中

我怎样才能做到这一点?Page类如何与Book类通信?我觉得在Page类中调用一个方法有违目的。例如,
Page#turn
将调用
Library#getBook#turnPage

page类是一个抽象类,因为页面可能超过一定的大小,我正在尽可能灵活地让团队中的其他人创建页面并将其附加到一本书中:

Page Class
public abstract String getContent()
public abstract boolean hasReachedEnd()
我所尝试的: 起初,我将页面切换为Book的内部类。然而,我不得不恢复更改。考虑<代码>超长页扩展图书。页< /代码>。我必须创建Book类才能创建页面。这个想法被放弃了,但我真的很喜欢我能称之为《代码》图书翻页的方式

我还试图使它们彼此依赖(不确定这个术语叫什么)。书有页,页有它所属的书。通过这种方式,我可以调用
书籍#翻页
,但感觉好像我作弊了,感觉不对。我这样做是对的还是不应该这样做

我还尝试调用一个方法Page#endreach,该方法使用Book类的参数。该方法将检查它是否是book类的一部分,然后在此方法内调用book#turnPage

还有什么建议


编辑:我通过使用注释中@buettner123提到的观察者模式解决了这个问题。

听起来你可以在这里使用观察者模式。页面到达末尾时将通知所有相关方,所有订阅者(本例中仅限您的图书)都可以对其进行操作。将图书实例传递给页面构造函数是一个选项。我总是这样做。没有作弊。不过我喜欢@buettner123。创建一个监听器接口,让book实现它,向page类添加一个
addListener
方法,并将book注册为监听器。你也可以去洗手间