Modo de empleo más implementaciones de una interfaz en una clase?

josamiti:

Me gustaría pedir su ayuda en relación con el siguiente problema.

Existe una interfaz que tiene más implementaciones:

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

y hay una clase que utiliza estas implementaciones de la interfaz en sus diferentes métodos:

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

Mi problema es que no me gustaría crear nuevos casos específicos en los métodos de la clase, por lo que de alguna manera me gustaría ocultar el que se utiliza la aplicación.

Sabes una buena solución para esto? ¿Hay algún patrón de diseño lo que puedo usar? ¿Cómo puedo ocultar las implementaciones concretas o no puedo?

Gracias por sus respuestas de antemano!

Nghia Bui:

Se puede aplicar el patrón de fábrica:

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();
    }
}

Dentro de la Factoryclase que usted puede almacenar en caché los objetos creados si es necesario.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=239354&siteId=1
Recomendado
Clasificación