Explicaciones de los ejemplos de java :
ADAPTER:
Adapter
Este patrón permite que trabajen juntas clases con interfaces incompatibles.
Para ello, un objeto adaptador reenvía al otro objeto los datos que recibe (a través de los
métodos que implementa, definidos en una clase abstracta o interface) tras manipularlos en
caso necesario.
Veamos un pequeño programa de ejemplo en el que utilizamos este patrón de diseño
(usando composición), creando un objeto adaptador que convierte de pesetas a euros para
poder comunicarse con otro objeto que gestiona los movimientos de una caja en euros:
[Link] (Cliente según el diagrama anterior):
1. package [Link].adapter01;
2.
3. public class Main
4. {
5. public static void main(String[] args)
6. {
7. Adaptador conversor = new Adaptador();
8.
9. [Link]( 2000 );
10. [Link]( 5000 );
11. [Link]( 1000 );
12.
13. [Link]( "Total euros: " + [Link]() );
14. }
15. }
[Link] (Objetivo según el diagrama anterior):
1. package [Link].adapter01;
2.
3. public interface IAdaptador
4. {
5. public abstract void sacarPesetas( double pesetas );
6. public abstract void ingresarPesetas( double pesetas );
7. }
[Link]:
1. package [Link].adapter01;
2.
3. public class Adaptador implements IAdaptador
4. {
5. CajaEuros cajaEuros = new CajaEuros();
6.
7. // ------------------
8.
9. public Adaptador() {
10. }
11.
12. // ------------------
13.
14. public double getSaldo()
15. {
16. return [Link]();
17. }
18.
19. // ------------------
20.
21. @Override
22. public void sacarPesetas( double pesetas )
23. {
24. double euros = pesetas / 166.386;
25. [Link]( euros );
26. }
27.
28. // ------------------
29.
30. @Override
31. public void ingresarPesetas( double pesetas )
32. {
33. double euros = pesetas / 166.386;
34. [Link]( euros );
35. }
36. }
[Link] (Adaptable según el diagrama anterior):
1. package [Link].adapter01;
2.
3. public class CajaEuros
4. {
5. private double euros = 0;
6.
7. // -----------------
8.
9. public CajaEuros() {
10. }
11.
12. // -----------------
13.
14. public double getTotalEuros()
15. {
16. return [Link];
17. }
18.
19. // -----------------
20.
21. public void sacarEuros( double euros )
22. {
23. [Link] -= euros;
24. }
25.
26. // -----------------
27.
28. public void ingresarEuros( double euros )
29. {
30. [Link] += euros;
31. }
32. }
Al ejecutarlo obtendríamos como resultado:
EXPLICACIÓN:
La clase CajaEuros contiene los métodos necesarios para ingresar y sacar fondos en
euros.
Creamos una interface que define los métodos que implementará el objeto de
tipo Adaptador, mediante los cuales éste redirigirá la comunicación hacia el objeto que
gestiona la caja en euros (realizando previamente la conversión de pesetas a euros).
Al inicio del programa se crea un objeto de tipo Adaptador, realizándose unos ingresos
en pesetas y obteniendo luego el saldo en euros.