如何解决如何通知“ Book”类“ Page”类已结束,以便书籍可以翻到下一页?
这些不是真正的课程,但这是我所能描述的最好的课程。
我正在使用以下类:图书馆,书籍,页面。
库类管理(添加/删除)所有书籍。 book类包含页面的集合。该书可以随时打开,并且该书知道当前哪个页面处于活动状态。 页面类到达页面末尾时会知道,因此知道何时转到下一页。但是,翻页方法位于Book类中。
我该怎么做? Page类如何与Book类进行通信?我感觉在Page类中调用方法无法达到目的。例如Page#turn
会呼叫Library#getBook#turnPage
。
page类是一个抽象类,因为页面的长度可能超过特定大小,并且我正在使其尽可能灵活,以便团队中的其他人创建页面并将其添加到书中:
Page Class
public abstract String getContent()
public abstract boolean hasReachedEnd()
我尝试过的方法:
最初,我将Page转换为Book的内部类。但是,我不得不还原更改。考虑SuperLongPage extends Book.Page
。我必须创建Book类才能创建页面。这个主意被取消了,但我真的很喜欢如何打电话给Book#turnPage
。
我还尝试使它们彼此依赖(不确定该术语的含义)。 Book有页面,Page有它的一部分。这样,我可以调用Book#turnPage
,但感觉就像是在作弊,感觉不对。我这样做正确吗?还是不应该这样做?
我还尝试调用采用Book类参数的Page#endReached方法。该方法将检查它是否是book类的一部分,然后将在此方法内部调用book#turnPage。
还有其他建议吗?
编辑:我通过使用@ buettner123在评论中指出的观察者模式解决了这个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。