Definição do modo adaptador: use duas classes incompatíveis juntas, que pertencem ao modo estrutural e requer duas identidades: adaptador (adaptador) e adaptador (adaptador).
Por que usar o modo adaptador
Geralmente, encontramos duas classes não relacionadas que precisam ser combinadas. O que fazer?
Usando o adaptador, crie uma interface híbrida (híbrida) entre essas duas interfaces.
Como usar o modo adaptador
Para implementar o método do adaptador, ele foi mencionado na seção "Regeneração de Classe" de "Think in Java", existem duas maneiras: composição e herança.
Suponha que queremos dirigir estacas, existem dois tipos: pilhas quadradas e pilhas circulares.
A cópia do código é a seguinte:
classe pública squarepeg {
public void insert (string str) {
System.out.println ("squarepeg insert ():"+str);
}
}
classe pública Roundpeg {
public void insertIntOhole (string msg) {
System.out.println ("Roundpeg insertIntOhole ():"+msg);
}
}
Agora existe uma aplicação que requer estacas quadradas e pilhas circulares. Em seguida, precisamos aplicar de forma abrangente essas duas classes não relacionadas.
A cópia do código é a seguinte:
classe pública pegadapter estende Squarepeg {
Roundpeg privado Roundpeg;
Pegadapter público (Roundpeg PEG) (this.Roundpeg = PEG;)
public void insert (string str) {redondpeg.insertIntOhole (str);}
}
No código acima, o Roundpeg pertence ao Adaptee e é o adaptador. O Pegadapter é um adaptador, adaptando o Adaptee (adaptador Roundpeg) e Target (Target Squarepeg). De fato, essa é uma aplicação abrangente dos métodos de composição e herança.
O PEGADAPTER primeiro herda Squarepeg e, em seguida, usa a combinação de novo para gerar o método do objeto, gera o objeto Roundpeg do Roundpeg e depois sobrecarrega o método da classe pai (). A partir daqui, você também entende a diferença entre usar novos para gerar objetos e usar a herança estende para gerar objetos.
Se você tem alguma experiência no uso de Java, descobriu que esse padrão é frequentemente usado.
Uso adicional
O pegadapter acima herda Squarepeg.
A cópia do código é a seguinte:
interface pública iroundpeg {
public void InsertIntIntOhole (string msg);
}
interface pública isquarepeg {
Public void insert (string str);
}
Abaixo estão os novos Roundpeg e Squarepeg.
A cópia do código é a seguinte:
classe pública squarepeg implementa Isquarepeg {
public void insert (string str) {
System.out.println ("squarepeg insert ():"+str);
}
}
classe pública Roundpeg implementa Iroundpeg {
public void insertIntOhole (string msg) {
System.out.println ("Roundpeg insertIntOhole ():"+msg);
}
}
Aqui está o novo Pegadapter chamado Adaptador de mão dupla:
A cópia do código é a seguinte:
classe pública Pegadapter implementa Iroundpeg, isquarepeg {
Roundpeg privado Roundpeg;
Privado Squarepeg Squarepeg;
// Método de construção
public pegadapter (redondpeg peg) {this.Roundpeg = PEG;}
// Método de construção
public pegadapter (squarepeg peg) (this.squarepeg = peg;)
public void insert (string str) {redondpeg.insertIntOhole (str);}
}
Há também um tipo chamado adaptadores flasgáveis, que podem obter dinamicamente um dos vários adaptadores. Usando a tecnologia de reflexão, você pode descobrir dinamicamente métodos públicos nas classes.