1
以下の2つの方法のうち、オブジェクトの変換にはどのような方法が適していますか?コンストラクタオブジェクトの変換のためのデザインパターンと表記
public class Foo {
int foo;
}
class Bar {
int bar;
public Bar(int bar) {
this.bar = bar;
}
public Bar(Foo foo) {
this.bar = foo.foo;
}
}
を用いASX()メソッド
public class Foo {
int foo;
public Bar asBar() {
return new Bar(foo);
}
}
class Bar {
int bar;
public Bar(int bar) {
this.bar = bar;
}
}
オブジェクト変換を用い
オブジェクト変換Iは、保守に関して(スケーラビリティ等いずれの方法の利点のわかりません.c)、他のものと比較して。確立された基準は何ですか?
私はこの質問がPaul Boddingtonによってコメントで指摘されているようにかなり広いと受け入れましたが、この質問が終了する前にいくつかの有用な議論を希望します。
変換の責任は別のオブジェクトに置く必要があります。 'Foo'を' Bar'以外の別のタイプにも変換したいのであればどうでしょうか?あなたはあなたのクラスの変換メソッドの束で終わる。これだけでなく、後に他の変換方法を追加することにした場合、O/C原則に違反します。 –
これまで提案された3つのアプローチに加えて、変換を行うための 'static'メソッドを持つこともできます。私はこの質問が本当に広いと思うし、正しい答えはありません。 –
@VinceEmighオブジェクト間の変換にのみ使用されるクラスを導入して名前空間を混乱させるわけではありません。このような変換メソッドを、変換元/変換先のいずれかのクラスに配置することは意味があります。 – SamTebbs33