私はこの本を読んでいます (Head First Object Oriented Design & Analysis)。第 5 章には、それについて他に考えてもらいたい提案があります。本は言う:
「オブジェクト間で異なる一連のプロパティがある場合は、Map などのコレクションを使用して、これらのプロパティを動的に保存します。」
さらに、それを行う理由をいくつか説明します。
「クラスから多くのメソッドを削除し、新しいプロパティがアプリに追加されたときにコードを変更する必要がなくなります」.
このアプローチの利点は理解していますが、ダウンサイズもありませんか? つまり、マップを使用してこれらの情報を格納し (この例では String から Enum へのマップ)、アクセスする getProperty(String) メソッドを提供する場合、このメソッドの呼び出し元は実際にどの String が許可されているかを知る必要があります。これがなんとなく苦手。もちろん、どの入力が許可されているかは javadoc に記載されている可能性があると主張できます。
これは本当にこの種の問題に対処する方法ですか?代替手段はありますか? サブクラスが大量にあるため、継承でこれを行うのは良くないことを理解しています。これらのサブクラスは、新しいプロパティを追加するだけで何かをオーバーライドすることはありません。