Supponiamo di avere due interfacce I
e J
implementate da Test
class. Ora ho bisogno di un oggetto di classe Test
a cui fanno riferimento le interfacce I e J. Posso farlo con singleton
design pattern. Ma il problema è che a volte non ho bisogno di un singolo oggetto nel programma. Quindi c'è anche un altro approccio che ho conosciuto.
I i = new Test();
i.doSomeThing();
J j = (J) i;
j.print();
La mia domanda, c'è un modo migliore per farlo? ... UPDATE ...
public interface I {
void doSomeThing();
}
public interface J {
void print();
}
public class Test implements I, J{
private int a;
@Override
public void doSomeThing() {
a += 10;
}
@Override
public void print() {
System.out.println(this.a);
}
}
... UPDATE ...
public class Main {
public static void main(String[] args) {
I i = new Test();
foo(i);
J j = (J) i;
ffoo(j);
}
/**
* This method has business with only the doSomething method that
* implement the Test class. This method has not nothing with the print
* method that is in the Test class. So it would be well that only pass
* the I interface to the foo method.
*/
public static void foo(I i) {
i.doSomeThing();
}
public static void ffoo(J j) {
j.print();
}
}