Modo adaptador Java
Recentemente, tenho aprendido o básico do Java e tenho muitas dúvidas quando estava aprendendo adaptadores. Eu pesquisei as informações on -line e encontrei muitas informações sobre o adaptador, mas este artigo é bom. Aqui está um registro, você pode ler o que precisa.
O padrão adaptador é converter a interface de uma classe em outra interface que o cliente espera, para que duas classes cujas interfaces originais não correspondam e não possam trabalhar juntas podem funcionar juntas. Funcionalmente falando, as classes incompatíveis com essas interfaces geralmente têm as mesmas funções ou similares. Geralmente, resolvemos esse tipo de incompatibilidade de interface modificando a interface desta classe, mas se não estivermos dispostos a modificar a interface original para um aplicativo, ou não temos o código -fonte do objeto, o modo adaptador será útil.
Vantagens do adaptador:
1. Descaspar a classe de destino e a classe adaptadora
2. Aumente a transparência e a reutilização da classe, encapsula a implementação específica na classe adaptadora, que é transparente para a classe do cliente e melhora a reutilização do adaptador.
3. Tanto a flexibilidade quanto a expansão são muito boas e estão em conformidade com o princípio de abrir e fechar
Os papéis envolvidos no adaptador incluem o seguinte:
Target: define a interface específica usada por um cliente.
Cliente: use a interface de destino para cooperar com objetos consistentes com a interface de destino.
Adaptado: uma interface existente que precisa ser adaptada.
Adaptador: Responsável por converter a interface do Adapated na interface do Target. Os adaptadores são uma classe de concreto, que é o núcleo desse padrão.
Os adaptadores são divididos em dois tipos: adaptador de classe e adaptador de objeto, que serão descritos em detalhes abaixo.
Adaptador de classe
O chamado adaptador de classe refere-se ao adaptador adaptador herdando nosso adaptador Adapated e implementando o destino da interface de destino. Como é uma herança única em Java, este adaptador pode servir apenas o adaptador herdado Adaptated. O código é o seguinte:
Adaptated
pacote com.bluemsun.classAdapter; Public Class Pessoa {private int id; nome de string privado; / *** A pessoa só pode falar inglês agora*/ public void dizenglish () {System.out.println ("A pessoa pode dizer inglês!"); } /*** omita o setter, getter. */}Interface de destino (destino)
pacote com.bluemsun.classAdapter;/*** O alvo exige que a pessoa possa falar inglês, francês e japonês. Mas agora a pessoa só pode falar inglês * @Author Administrator * */interface pública Target_person {void dizenglish (); void dizfrench (); Void dizJapanese ();}Adaptador
pacote com.bluemsun.classAdapter;/*** Adaptador de classe, porque herda a pessoa, e o java pode herdar apenas em um único, para que este adaptador sirva apenas a classe de pessoa* Este adaptador permite que a classe de pessoa segments implemente os métodos especificados pela interface de destino sem modificar o código -fonte* @author administrador**/ dizfrench () {System.out.println ("A pessoa pode dizer francês!"); } @Override public void SayJapanese () {System.out.println ("A pessoa pode dizer japonês!"); }}Cliente
pacote com.bluemsun.classAdapter; public class Test {public static void main (string [] args) {Target_person Pessoa = new Adapter_person (); pessoa.SayEnglish (); pessoa.Sayfrench (); Person.SayJapanese (); }}Os poucos códigos simples acima demonstram o papel dos adaptadores de classe. Como dissemos no início, este adaptador adaptador só pode servir a classe de pessoa. Neste momento, você pode se perguntar, se eu precisar me adaptar a muitas classes, preciso escrever um adaptador para cada classe que precisa se adaptar? Existe uma maneira mais flexível? A resposta é: sim! Este é o adaptador de objeto que estamos falando abaixo.
Adaptador de objeto
O chamado adaptador de objeto, simplesmente colocado, significa que o adaptador implementa nossa interface de destino, mas não herda as classes que precisam ser adaptadas. Em vez disso, é adaptado pela passagem do construtor do adaptador. O código é o seguinte: (Target, Adaptated Igual que acima)
Adaptador
pacote com.bluemsun.ObjectDapter; import com.bluemsun.classadapter.person; import com.bluemsun.classadapter.target_person;/** * Adaptador de objetos @Autador, diferentemente do adapter da classe/Adaptador de objeto, o adapter do objeto; pessoa privada; // Passa a pessoa da classe Adaptee no construtor Adaptador público (pessoa de pessoa) {this.person = pessoa; } // implementar sayenglish () na interface de destino-Call SayEnglish () no Adaptee @Override public void SayEnglish () {this.person.sayenglish (); } // Implemente outros métodos na interface @Override public void Sayfrench () {System.out.println ("A pessoa pode dizer francês!"); } @Override public void SayJapanese () {System.out.println ("A pessoa pode dizer japonês!"); }}Cliente
pacote com.bluemsun.ObjectDapter; import com.bluemsun.classAdapter.person; importar com.bluemsun.classadapter.target_person; public class Test {public static void main (string [] args) {Target_person = novo adaptter_person (nova pessoa); pessoa.SayEnglish (); pessoa.Sayfrench (); Person.SayJapanese (); }}Os adaptadores de objetos podem se adaptar a várias classes com adaptações. Basta passar aulas diferentes com adaptações no construtor do adaptador. Flexibilidade.
Vantagens dos adaptadores de classe:
1. Como a classe adaptadora é uma subclasse da classe adaptadora, alguns métodos adaptadores podem ser substituídos na classe adaptadora, tornando o adaptador mais flexível.
Desvantagens dos adaptadores de classe:
1. Para idiomas como Java e C# que não suportam herança múltipla, no máximo uma classe adaptadora pode ser adaptada a pelo menos uma classe adaptadora por vez, e a classe abstrata de destino pode ser apenas uma interface, não uma classe. Seu uso tem certas limitações. Não pode ser adaptado a uma classe adaptadora e sua subclasse à interface de destino ao mesmo tempo.
Vantagens dos adaptadores de objetos:
1. Adapte vários adaptadores diferentes ao mesmo alvo, ou seja, o mesmo adaptador pode adaptar a classe adaptadora e sua subclasse à interface de destino.
Desvantagens dos adaptadores de objetos:
1. Comparado com o modo adaptador de classe, não é fácil substituir a classe adaptadora.
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!