5

私は1年前からファクトリーパターンを使用しています。ときどき、本当の利点はクリーンなコードだけだと感じることがあります。説明させてください、

interface A {

    public void test();
}

class B implements A {
    public void test() {

    }
}

class C implements A {
    public void test() {

    }
}

class Factory {
    public static A getObject(String name){
        if(name.equalsIgnoreCase("B")){
            return new B();
        }else if(name.equalsIgnoreCase("C")){
          return new C();
        }
        return new B(); 

    }
}

public class Test {

    public static void main(String[] args) {
        A a = Factory.getObject(args[0]);

        // if i dint use factory pattern
        A nofactory=null;
        if(args[0].equalsIgnoreCase("B")){
            nofactory= new B();
        }else if(args[0].equalsIgnoreCase("C")){
            nofactory= new C();
        }
    }
}

上記のコードから、工場のパターンはコードを美しくするだけだと思います。私の理解が間違っている場合はお知らせください。

4

3 に答える 3

2

インターフェイスとクラスがライブラリにあり、コードがライブラリを使用するメイン メソッドである場合、Aクラスなどをライブラリに追加でき、コードを変更せずにそれらを使用できることを意味します。使用する実装を選択する責任は、ライブラリに移されます。BCDE

また、あなたの例は非常に単純です。また、入力が型と完全に一致する文字列よりも複雑になる場合もあります。入力は、たとえば、特定の実装を読み取る必要がある特定の形式のファイルである可能性があります。

于 2013-05-28T13:17:31.683 に答える
1

美化ではなく、次の例を検討してください

あなたがテストクラスを実装していて、あなたのパートナーがB、C、Dを実装しているとしましょう....(あなたが知らない他の人たち)..どうすればこれを管理できますか?

Factory パターンを使用すると、アプリケーションの他の部分を知る必要なく、アプリケーションの一部をコーディングできます。

于 2013-05-28T13:26:38.277 に答える