Comment éviter de dupliquer le code commun de deux class ayant une meme interface ?
Bonjour,
J'ai deux class presque identiques à une méthode près.
Je leur ai donné une interface commune, pour pouvoir les utiliser avec une ArrayList.
Néanmoins il reste du code commun dupliqué.
Peut-on éviter de dupliquer le code commun aux deux class ?
Projet exemple complet
Merci,
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public class AAA01 implements Iaaa {
private int zz;
public AAA01(int zz) {
this.zz = zz;
}
private void setZz(int zz) {
this.zz = zz;
}
private int getZz() {
return zz;
}
public int methodeAA(int x) {
setZz(getZz() + x);
return getZz();
}
public int methodeBB(int x) {
setZz(getZz() * x);
return getZz();
}
@Override
public String toString() {
return String.valueOf(getZz());
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public class AAA02 implements Iaaa {
private int zz;
public AAA02(int zz) {
this.zz = zz;
}
private void setZz(int zz) {
this.zz = zz;
}
private int getZz() {
return zz;
}
public int methodeAA(int x) {
setZz(getZz() + x + 10);
return getZz();
}
public int methodeBB(int x) {
setZz(getZz() * x);
return getZz();
}
@Override
public String toString() {
return String.valueOf(getZz());
}
} |
Code:
1 2 3 4 5 6 7
| public interface Iaaa {
public abstract int methodeAA(int x);
public abstract int methodeBB(int x);
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import java.util.ArrayList;
import java.util.List;
public class MainTestJava {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MainTestJava mainTestJava = new MainTestJava();
}
public MainTestJava() {
List<Iaaa> aaa = new ArrayList<Iaaa>();
aaa.add(new AAA01(100));
aaa.add(new AAA01(200));
aaa.add(new AAA02(100));
aaa.add(new AAA02(200));
for (Iaaa iaaa : aaa) {
iaaa.methodeAA(2);
iaaa.methodeBB(10);
System.out.println(iaaa.toString());
}
}
} |