假设我有一个Timer对象,该对象具有TimerDisplay对象作为其属性之一。如果我在TimerDisplay对象中具有update(hours,minutes,seconds)方法,那么以下哪种方法(如果有)是一种好习惯:
在Timer中有一个updateDisplay(hours,minutes,seconds)方法,该方法在TimerDisplay中调用相应的update方法
允许直接调用timer.timerDisplay.update(小时,分钟,秒)
顺便说一下,我只是开始面向对象。第一种似乎更面向对象,但最终有两种几乎相同的方法。第二个似乎更容易,但是它不会再次封装吗?
提前致谢
最佳答案
直接访问timer.timerDisplay听起来是个坏主意(因为大多数时候都是公共属性)。如果您不想让计时器类麻烦与timerDisplay通信,那么为什么将timerDisplay用作计时器的属性?然后,让自己拥有一个正在更新计时器的人。
另一方面,如果您希望Timer类管理更新显示,那么将其限制为仅管理一个显示就听起来不太好。为什么不保留要通知的显示列表?如果选择让Timer这样进行通信,则将其隐藏在Timer.update方法后面至少听起来最好。
顺便说一句,如果您不喜欢TimerDisplay的方法与计时器过于相似,也许可以使用更简单的方法,例如
TimerDisplay.updateFrom(timer)
使用timer.getHours()等,而不是每次都传递大量参数。
最后,根据问题的复杂程度,您可能只需要将两个类融合为一个类就可以摆脱困境。它的模块化程度较低,但简单性也有其优点。