現在、オブジェクト指向設計プロジェクトに取り組んでおり、サブクラスのミューテーターでデータを検証するためのより良い方法があるかどうかを知りたい.
たとえば、Apartment、Condo、および House というサブクラスを持つ Home クラスがあります。Home クラスには、サブクラスが共有する (プライベート) フィールドのミューテーターを含めたいと思います。フィールドの 1 つが squareFootage だとします。サブクラスが、ミューテーターを完全にオーバーライドすることなく、squareFootage に独自の有効な値を設定できるように、Home のミューテーターを十分にジェネリックにする方法はありますか? つまり、サブクラスごとに、squareFootage の異なる有効範囲が必要です。
ホームで可能な範囲値を設定してから、サブクラスでそれらをオーバーライドしようとしました。残念ながら、Home のミューテーターはサブクラスではなく Home クラスから取得します。
そのため、ミューテーターを抽象化することにしましたが、残念ながら、各サブクラスでミューテーターを文字通りコピーして貼り付けることができるため、多くのコードが繰り返されることになります。
可能であれば、可能な範囲の値を静的にしたいと思います。これはリフレクションで可能かもしれないことを理解していますが、このプロジェクトでは使用したくありません。