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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
public interface Iaaa {
 
	public abstract int methodeAA(int x);
 
	public abstract int methodeBB(int x);
 
}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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());
		}
	}
 
}