2011-07-29 4 views
1

私は、そのプロパティの1つとしてTimerDisplayオブジェクトを持つTimerオブジェクトを持っているとします。私はTimerDisplayオブジェクト内の更新(時間、分、秒)メソッドを使用している場合は、(もしあれば)次のうちどれが良い習慣です:複合オブジェクトでは、親オブジェクトと子オブジェクトに共通する機能はほとんど同じですか?

  • は中updateDisplay(時間、分、秒)メソッドを持っています私は道で、OOを始めている

TimerDisplay

  • で対応する更新メソッドを呼び出すタイマーは、timer.timerDisplay.updateへの直接呼び出し(時間、分、秒)を可能にします。最初のものはより多くのオブジェクト指向のように見えますが、ほぼ同じ2つのメソッドで終わります。 2番目のほうが簡単ですが、カプセル化を再開しませんか?事前

  • 答えて

    0

    (パブリック属性は、ほとんどの時間をしているとして)timer.timerDisplayへの直接アクセスは悪いアイデアのように聞こえるで

    感謝。タイマークラスをtimerDisplayとのコミュニケーションに気にかけたくない場合は、timerDisplayをタイマーのプロパティにするのはなぜですか?ちょうどタイマーを更新している同じ人が自分自身のディスプレイを所有している。

    一方、Timerクラスでディスプレイの更新を管理する場合は、1つのディスプレイのみを管理するように制限することはその良いことにはならない。なぜディスプレイのリストを通知し続けるのではないでしょうか?タイマーにこのような通信をさせることを選択した場合、Timer.updateメソッドの後ろにそれを隠すことは、少なくとも最善の音を出します。あなたはタイマーに似すぎメソッドを持つTimerDisplayが気に入らない場合はさておき、おそらくあなたはtimer.getHours()などを使用して代わりの通過

    TimerDisplay.updateFrom(timer) 
    

    のような簡単な方法を使用することができるよう

    毎回多くのパラメータが必要です。


    最後に、問題の複雑さによっては、両方のクラスを1つのクラスに融合させるだけでなくなる可能性があります。それはモジュール化されていませんが、シンプルさもその美徳を持っています。

    関連する問題