1クラスに1つのインタフェースの複数の実装を使用する方法?

josamiti:

私は、次のような問題について、あなたの助けをお願いしたいと思います。

複数の実装を持っているインタフェースがあります:

public interface MyInterface {
    void method();
}
public class MyInterfaceA implements MyInterface
public class MyInterfaceB implements MyInterface

その異なる方法でインターフェースのこれらの実装を使用するクラスがあります。

public class MyClass {
    public void firstMethod() {
        new MyInterfaceA().method();
    }
    public void secondMethod() {
        new MyInterfaceB().method();
    }
}

私の問題は、私は、クラスのメソッドで新しい特定のインスタンスを作成するので、何とか私は実装が使用されて非表示にしたい好きではないだろうということです。

あなたはこのための素晴らしい解決策を知っていますか?私が使用することができますどのような任意のデザインパターンはありますか?どのように私は、具体的な実装を非表示にしたり、私はできませんか?

事前にあなたの答えをありがとう!

Nghiaブイ:

あなたは、Factoryパターンを適用することができます。

class Factory {
    public MyInterface a() { return new MyInterfaceA(); }
    public MyInterface b() { return new MyInterfaceB(); }
}

public class MyClass {
    private Factory factory;
    public MyClass(Factory factory) { this.factory = factory; }
    public void firstMethod() {
        factory.a().method();
    }
    public void secondMethod() {
        factory.b().method();
    }
}

内部Factoryクラスあなたは、必要に応じて作成されたオブジェクトをキャッシュすることができます。

おすすめ

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