ip696:
私は、複雑なオブジェクトの応答を取得します。それは次のようになります。
class ComplexObject{
private PartOne partOne;
private PartTwo partTwo;
private PartThree partThree;
}
そして、私はこの応答を処理する必要が。今、私はこのようにそれを実行します。
if (partOne!= null) {
processOne(partOne);
} else if (partTwo != null) {
processTwo(partTwo);
} else if (partThree != null) {
processThree(partThree);
}
しかし、それは悪いに見えます。私は外部のサービスに影響を与えることができれば、私は、列挙型を追加しますStatus.PART_ONE, Status.PART_TWO, Status.PART_THREE
が、私はそれを行うことはできません。
どのように私はそれクリーナーを作るために、このコードを書き換えるのですか?
davidxxx:
場合はPartOne
、PartTwo
、PartThree
基底クラスの一部にすることはありません、あなたはポリモーフィズムを利用することができませんでした。
この場合は、あなたの実際の方法は、許容可能なトレードオフです。
私はちょうどこのようにそれを記述します。
if (partOne!= null) processOne(partOne);
else if (partTwo != null) processTwo(partTwo);
else if (partThree != null) processThree(partThree);