Observe o código Java a seguir:
interface I1 {
public void meth1();
}
class C1 implements I1 {
public void meth1() {
...
}
}
class C2 implements I1 {
public void meth1() {
...
}
}
class Factory {
public static I1 getInstancia (int op1) {
if (op1 == 0) return new C1();
return new C2();
}
}
public class Customer {
public void meth1() {
int op1 = 0;
AAA obj = BBB;
...
}
}
De modo a não tornar a classe Customer dependente de uma implementação específica, as expressões em AAA e BBB poderiam ser substituídas, respectivamente, por: