Adapter (ontwerppatroon)

Uit Wikipedia, de vrije encyclopedie
Naar navigatie springen Naar zoeken springen

Adapter is een ontwerppatroon. Het Adapter-patroon wordt gebruikt om de interface van de ene klasse om te zetten in de interface van een andere klasse.

Adapter kan twee klassen laten samenwerken die anders niet zouden samenwerken door hun verschillende interfaces.

AdapterPatroon.jpg

Rollen[bewerken | brontekst bewerken]

  • Target, KlasseA in het voorbeeld.
  • Adaptee, KlasseB in het voorbeeld.
  • Adapter, BNaarAAdapter in het voorbeeld.

Collaboraties[bewerken | brontekst bewerken]

De Adapter voert de methode van de Adaptee-klasse uit, als de methode van de Target-klasse wordt opgeroepen.

Implementatie[bewerken | brontekst bewerken]

Implementatie in Java[bewerken | brontekst bewerken]

Implementatie van de target-klasse[bewerken | brontekst bewerken]

public class KlasseA implements InterfaceKlasseA {
 
 	public void methodeVanKlasseA() {
 		System.out.println("methodeVanKlasseA");
 	}
}

Implementatie van de adaptee-klasse[bewerken | brontekst bewerken]

public class KlasseB {
 	
 	public void methodeVanKlasseB(){
 		System.out.println("methodeVanKlasseB");
 	}
 }

Implementatie van de adapter-klasse[bewerken | brontekst bewerken]

public class BNaarAAdapter implements InterfaceKlasseA {
 
 	private KlasseB b;
 
 	public BNaarAAdapter(KlasseB b) {
 		setB(b);
 	}
 	
 	public void setB(KlasseB b) {
 		this.b = b;
 	}
 
 	public void methodeVanKlasseA() {
 		b.methodeVanKlasseB();
 	}
 }

Implementatie van de interface (tussen de adapter en het target)[bewerken | brontekst bewerken]

public interface InterfaceKlasseA {
 	
 	public void methodeVanKlasseA();
 }

Implementatie van een voorbeeld applicatie[bewerken | brontekst bewerken]

public class Adapter {
 	
 	public static void main(String[] args){
 		KlasseB b = new KlasseB();
 		BNaarAAdapter adapter = new BNaarAAdapter(b);
 		DoeIetsMetEenA(adapter);
 	}
 
 	private static void DoeIetsMetEenA(InterfaceKlasseA a) {
 		a.methodeVanKlasseA();
 	}
 }

Console: methodeVanKlasseB

Zie ook[bewerken | brontekst bewerken]