俺だったらオブジェクトが能動的に
他のオブジェクトを取得しに行くプログラムは書かないね。
updateの呼び出し元が処理に必要な情報を明示的に渡せば良いし、
そうするのが筋ってもんだ。
でもそうすると、関数の仮引数リストが処理内容によってマチマチになって、
インターフェースの統一は出来ない。多態も出来ない。
でも、仮引数のリストが違うってことは、本質的に違う種類の処理なのだろう。
仮引数リストの違いが縁の切れ目。無理に纏めずに諦めよう。