質問: よろしくお願いします。 現在、クラス設計を行っています。 has-aの関係が多かったので、コンポジションを多く使いました。 例えば、下記のようなクラス構成だったとします。 ``` Houseクラス ┗Bathroomクラス ┗Bathクラス ┗Waterクラス ┗temperatureフィールド ``` この時、Houseインスタンスからtemperatureフィールドの値を取得しようとすると、Getterの嵐になってしまうのですが、これは設計としては普通でしょうか? わかりにくくて申し訳ありません。 Getterは出来るだけ定義したくないという思想で設計をしたかったので、不安です。 ご教示をよろしくお願いします。
回答: "この時、Houseインスタンスからtemperatureフィールドの値を取得しようとする" 用途が多ければ非常に使いづらいので、別途Utiltilyを作成して簡単に属性を取得できるクラスを設けるくらいでしょうか。 アクセサメソッドが多くなってしまう問題とクラス階層が深くなってしまう話はそこまで密接な関係ではないように思えますし、あまりに煩雑だと思うのであればCommons-OGNLのようなライブラリを使うなどで回避するでしょう。 DataTransferObjectのような、属性の出し入れしか提供しないクラスであれば、つけてもつけなくても一緒です。