-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathAdapter.ts
36 lines (29 loc) · 936 Bytes
/
Adapter.ts
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
32
33
34
35
36
//1. Target Interfaz esperada por el cliente
interface Cargador{
cargarDispositivo(): void
}
//2. Adaptee: clase incompatible
class CargadorEuropeo{
enchufarEnSocketEuropeo(): void {
console.log("Cargando dispositivo utilizando un socket europeo");
}
}
//3. Adapter: traduce la interface del Adaptee al Target
class AdapterCargadorEuropeo implements Cargador {
private cargadorEuropeo: CargadorEuropeo;
constructor(cargadorEuropeo: CargadorEuropeo){
this.cargadorEuropeo = cargadorEuropeo;
}
cargarDispositivo(): void {
console.log("Adaptando cargador europeo a cargador standard");
this.cargadorEuropeo.enchufarEnSocketEuropeo();
}
}
// 4. Cliente
function cargar(cargador: Cargador): void {
cargador.cargarDispositivo();
}
//uso
const cargadorEuropeo = new CargadorEuropeo();
const adapter = new AdapterCargadorEuropeo(cargadorEuropeo);
cargar(adapter);