Muitas vezes encontramos essa situação. Com duas aulas prontas, não há conexão entre elas, mas agora queremos usar um dos métodos da classe e o outro. Há uma solução alternativa para modificar suas respectivas interfaces, mas é isso que menos queremos ver. Neste momento, o modo adaptador será útil.
O modo adaptador também é chamado de modo adaptador, que é um dos 23 modos de design propostos pelo GOF. O modo adaptador é um dos modos construtivos. Através do modo adaptador, a forma de interface das classes existentes (ou classes externas) pode ser alterada.
Existem três maneiras de adaptador, um é o adaptador de objeto, um é adaptador de classe e o outro é adaptador de interface
Os seguintes exemplos são dados:
1. Adaptador de classe
Diagrama de classe
classe pública drawrecrectangle {// desenhar quadrado public void drawrectangle (string msg) {System.out.println ("Draw retângulo:" + msg); }} interface pública iDrawcircle {// desenhar interface do círculo void drawcircle (); } / ** * O adaptador de classe usa a herança do objeto, que é um método de definição estática * @Author Stone * */ public classe drawAdapter4class estende o drawrectangle implementa o iDrawcircle {// pode desenhar quadrado e círculo @Override void drawcircle () {System.out.Println ("drawadAdArDerride }}2. Adaptador de objeto
Diagrama de classe:
/*** Adaptador de objeto: a maneira de usar a combinação de objetos é uma maneira de combinar dinamicamente. * Pode desenhar quadrado e círculos * @author stone * drawadapter é um adaptador, o drawrectangle pertence ao adaptador e é o adaptador. O adaptador se adaptará ao adaptador e ao adaptador (drawcircle) * */ public class drawAdapter4Object implementa o iDrawcircle {// pode desenhar quadrado e circular o privado drawrectangle drawrectangle; public drawAdapter4Object (drawrectangle drawrectangle) {this.drawrectangle = dreatrectangle; } @Override public void drawCircle () {System.out.println ("drawAdapter4Object: drawcircle"); } public void drawrectangle (string msg) {drecrectangle.drawRectangle (msg); }} 3. Adaptador de interface
Diagrama de classe
/ * * Adaptador de interface: existem métodos abstratos na interface. Queremos apenas implementar alguns deles, mas não queremos implementar todos eles. * Portanto, forneça uma implementação vazia padrão e, em seguida, herde dele e reescreva o método que queremos implementar */ interface pública IDRAW {void drawCircle (); vazio drawrecrectangle (); } /** A implementação padrão do adaptador de interface*/public classe DefaultDrawadapter implementa o iDraw {// Implementação de quadrados e círculos @Override public void drawcircle () {} @Override public void desenhando public class Test {public static void main (string [] args) {// adaptador de objeto drawAdapter4Object objadapter = new DrawAdapter4Object (new Drawrectangle ()); objadapter.drawcircle (); objadapter.drawrectangle ("em drawAdapter4Object"); System.out.println ("-----------------"); // Adaptador de classe DrawAdapter4Class clzadapter = new DrawAdapter4Class (); clzadapter.drawcircle (); clzadapter.drawrectangle ("em drawAdapter4class"); System.out.println ("-------------------"); // Adaptador de interface MyDrawadapter myDrawadapter = new MyDrawadapter (); myDrawadapter.Drawcircle (); myDrawadapter.DrawRectangle (); } classe estática mydrawadapter estende defaultDrawadapter {@Override public void drawCircle () {System.out.println ("drawcircle em myDrawadapter"); }}}Imprimir
DrawAdapter4Object: drawcircle draw retângulo: em drawAdapter4Object -------------- DrawAdapter4class: drawcircle desenhado retângulo: em drawAdapter4class ------------ Drawcircle em Mydrawadapter
Três recursos do modo adaptador:
1 O objeto adaptador implementa a interface original
2 O objeto adaptador combina um objeto que implementa uma nova interface (esse objeto também não pode implementar uma interface, é apenas um objeto simples)
3. Um método específico no qual a chamada para o método de interface original do adaptador é delegada a uma instância da nova interface
Algumas pessoas pensam que os exemplos que explicam o padrão de design são muito simples, e parece assim, mas se você realmente deseja usá -lo no desenvolvimento do projeto, ele realmente não será capaz de aplicá -lo. De fato, não precisamos usar deliberadamente padrões de design em nossos projetos, mas devemos começar com os problemas reais de design e usar qual modelo pode resolver nossos problemas. Não use o padrão para usar o padrão e depois pule a linha inferior. De um modo geral, desde que você siga certos princípios de design, o padrão de design também é resumido com base nesses princípios. Se você estiver familiarizado com esses princípios, o padrão existirá naturalmente.