コンポジションでやってはいけないこと

階層中の特定のオブジェクトのequals(Equals)メソッドを安易に再定義(override)すること。下手をすると全ての階層のオブジェクトに渡って、同メソッドの再定義を余儀なくされるだろう、というか余儀なくされたので止めた。あと、コンポジションを構成するクラスはできるだけ定数オブジェクト(Immutable)であることが望ましいな。状態が変わることを前提にすると、後々面倒なことが指数的に増えるケースが多い。

設計後、実装〜運用に至る時に、同じ感想を持つことが多いのでメモ。