Analogia
Imagine que você tem:
- vários tipos de controle remoto
- várias marcas de TV
O controle funciona
A TV funciona
Mas você não quer criar um controle diferente pra cada TV…
O que você faz? Você cria uma conexão entre eles onde:
o controle diz o que fazer
a TV sabe como fazer
Isso é o Bridge.
Ele separa duas coisas que cresceriam juntas (e virariam um caos) em duas partes independentes.
O que o bridge resolve?
Evite isso:
ControleSamsung
ControleLg
ControleSony
ControleAvancadoSamsung
ControleAvancadoLg
...
Ideia central
Separar abstração (o que eu faço) e implementação (como eu faço).
Exemplo
// Implementação: como eu faço isso (TVs)
class TV {
ligar() {}
}
class SamsungTV extends TV {
ligar() {
console.log("Ligando TV Samsung");
}
}
class LgTV extends TV {
ligar() {
console.log("Ligando TV LG");
}
}
// Abstração: o que eu quero fazer (controle remoto)
class ControleRemoto {
constructor(tv) {
// Composição: o controle remoto tem uma TV
this.tv = tv;
}
ligar() {
this.tv.ligar();
}
}
class ControleAvancado extends ControleRemoto {
netflix() {
console.log("Abrindo Netflix");
}
}
const samsung = new SamsungTV();
const lg = new LgTV();
const controle1 = new ControleRemoto(samsung);
controle1.ligar();
// Ligando TV Samsung
const controle2 = new ControleAvancado(lg);
controle2.ligar();
// Ligando TV LG
controle2.netflix();
// Abrindo Netflix
Top comments (0)