署名場合はどのようにこのコードではnullのためとあれば、それ以外のチェックを取り除くには?

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:

場合はPartOnePartTwoPartThree基底クラスの一部にすることはありません、あなたはポリモーフィズムを利用することができませんでした。
この場合は、あなたの実際の方法は、許容可能なトレードオフです。

私はちょうどこのようにそれを記述します。

if (partOne!= null) processOne(partOne);
else if (partTwo != null) processTwo(partTwo);
else if (partThree != null) processThree(partThree);

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=212143&siteId=1