47

GoogleWeather というクラスがあり、それを別のクラス CustomWeather に変換したいと考えています。

クラスの変換に役立つ設計パターンはありますか?

4

3 に答える 3

56

重要な決定事項が 1 つあります。

ソース オブジェクトへの将来の変更を反映するために、変換によって生成されるオブジェクトが必要ですか?

このような機能が必要ない場合、最も簡単な方法は、他の回答で述べたように、ソース オブジェクトのフィールドに基づいて新しいオブジェクトを作成する静的メソッドでユーティリティ クラスを使用することです。

一方、ソース オブジェクトへの変更を反映するために変換されたオブジェクトが必要な場合は、おそらくアダプターの設計パターンに沿ったものが必要になるでしょう。

public class GoogleWeather {
    ...
    public int getTemperatureCelcius() {
        ...
    }
    ...
}

public interface CustomWeather {
    ...
    public int getTemperatureKelvin();
    ...
}

public class GoogleWeatherAdapter implements CustomWeather {
    private GoogleWeather weather;
    ...
    public int getTemperatureKelvin() {
        return this.weather.getTemperatureCelcius() + 273;
    }
    ...
}
于 2012-08-06T19:57:44.387 に答える
8

また、java.util.function から Java8 の新機能「関数」を使用することもできます。

より詳細な説明はhttp://www.leveluplunch.com/java/tutorials/016-transform-object-class-into-another-type-java8/にあります。ぜひご覧ください!

于 2015-11-30T16:58:27.020 に答える