Modo de adaptador (Adaptador)----modo de diseño
Directorio de artículos
¿Qué es?
El patrón de adaptador actúa como un puente entre dos interfaces incompatibles.
El modo adaptador viene de la vida, por ejemplo, el lector de tarjetas se usa como adaptador entre la tarjeta de memoria y la computadora portátil, el enchufe de conversión de corriente es el adaptador que resuelve el desajuste entre el voltaje requerido y el voltaje real, y así sucesivamente.
Una breve introducción al patrón adaptador
En pocas palabras, el modo adaptador resuelve principalmente el problema de dos conexiones de interfaz incompatibles.
Cómo funciona el patrón de adaptador
En pocas palabras, es convertir clases incompatibles en clases compatibles para trabajar juntas a través de adaptadores .
Tres formas de implementar el patrón adaptador
- Adaptador de clase : La clase adaptadora hereda la clase adaptada por medio de la herencia, de modo que la operación de la clase adaptada puede usarse y cambiarse para lograr la compatibilidad de trabajo .
- Adaptador de objetos: al agregar la clase adaptada a la clase de adaptador y pasar la instancia de la clase adaptada de acuerdo con el método de construcción , la clase de adaptador funciona de acuerdo con esta instancia , a fin de lograr la compatibilidad de la interfaz , lo cual se recomienda.
- Adaptador de interfaz: al definir una clase abstracta para heredar la interfaz , sobrescriba todos los métodos en la interfaz , de modo que las subclases que hereden esta clase abstracta puedan usar selectivamente los métodos en la interfaz .
jejeje es un poco dificil de entender no importa déjame demostrarlo creo que todo el mundo lo puede entender.
Adaptador estuche pequeño
Ahora Xiaogao tiene un teléfono móvil, pero desafortunadamente no hay energía y necesita cargarse, pero el enchufe es de 220 V y el voltaje de carga del teléfono móvil es de 5 V. En este momento, es necesario diseñar un enchufe de conversión que convierta el voltaje de 220 V en voltaje de 5 V. , ¿puedes ayudar a Xiao Gao a diseñarlo?
Diseño con adaptadores de clase
Este adaptador mejora el funcionamiento de la clase adaptada a través de la herencia , logrando así la compatibilidad de voltaje.
Enchufe clase 220V
package com.design_patterns.adapter.classadapter;
public class Voltage220V {
//输出220伏电压
public int output220V(){
int src = 220;
System.out.println("电压 = " + src + "伏");
return src;
}
}
Una interfaz con un voltaje de salida de 5V
package com.design_patterns.adapter.classadapter;
public interface IVoltage5V {
public int output5V();
}
Adaptador de clase para conversión de voltaje
package com.design_patterns.adapter.classadapter;
//适配器类
public class VoltageAdapter extends Voltage220V implements IVoltage5V{
//覆写接口中的方法
@Override
public int output5V() {
//获取到220V的电压
int srcV = output220V();
int dstV = srcV / 44; //转成5V
return dstV;
}
}
teléfono móvil
package com.design_patterns.adapter.classadapter;
public class Phone {
//充电
public void charging(IVoltage5V iVoltage5V){
if(iVoltage5V.output5V() == 5){
System.out.println("电压为5V,可以充电~~~");
} else if (iVoltage5V.output5V() > 5){
System.out.println("电压大于5V,不可以充电~~~");
}
}
}
Uso y cargo del cliente
package com.design_patterns.adapter.classadapter;
public class Client {
public static void main(String[] args) {
System.out.println("====类适配器模式====");
Phone phone = new Phone();
phone.charging(new VoltageAdapter());
}
}
resultado de la operación
====类适配器模式====
电压 = 220伏
电压为5V,可以充电~~~
Diseño con adaptadores de objetos
Este adaptador mejora el funcionamiento de la clase adaptada por medio de la agregación , logrando así la compatibilidad de voltaje. A continuación, solo se enumeran las diferencias con el adaptador anterior .
Adaptador de objeto para conversión de tensión
package com.design_patterns.adapter.objectadapter;
//适配器类
public class VoltageAdapter implements IVoltage5V {
private Voltage220V voltage220V; //关联关系-聚合
//通过构造方法得到Voltage220V的对象实例
public VoltageAdapter(Voltage220V voltage220V) {
this.voltage220V = voltage220V;
}
/**
* 将220V的电压转换为5V的电压的方法
* 返回转换过后的电压
* @return
*/
@Override
public int output5V() {
//获取到220V的电压
int srcV = this.voltage220V.output220V();
int dstV = srcV / 44;
System.out.println("使用对象适配器适配完成!!!");
return dstV;
}
}
Uso y cargo del cliente
package com.design_patterns.adapter.objectadapter;
public class Client {
public static void main(String[] args) {
System.out.println("====对象适配器模式====");
Phone phone = new Phone();
phone.charging(new VoltageAdapter(new Voltage220V()));
}
}
resultado de la operación
====对象适配器模式====
电压 = 220伏
使用对象适配器适配完成!!!
电压为5V,可以充电~~~
Adaptador de interfaz, modo de adaptador predeterminado (carcasa pequeña personalizada)
interfaz definida
package com.design_patterns.adapter.interfaceadapter;
public interface Interface4 {
public void m1();
public void m2();
public void m3();
public void m4();
}
Clase abstracta definida
package com.design_patterns.adapter.interfaceadapter;
public abstract class AbsAdapter implements Interface4 {
@Override
public void m1() {
}
@Override
public void m2() {
}
@Override
public void m3() {
}
@Override
public void m4() {
}
}
Definir la clase de prueba para probar
package com.design_patterns.adapter.interfaceadapter;
public class Client {
public static void main(String[] args) {
AbsAdapter absAdapter = new AbsAdapter() {
/**
* 此时只需要去覆盖我们需要使用的接口方法
*/
@Override
public void m1() {
System.out.println("调用的是子类m1的方法");
}
};
absAdapter.m1();
}
}
resultado de la operación
调用的是子类m1的方法
Je, je, aunque este caso es muy simple, sigue siendo muy útil en el desarrollo real, al diseñar un adaptador de clase abstracta para implementar solo los métodos que deben implementarse.
Resumir
Hasta ahora, el contenido básico del adaptador se ha resuelto, je, je, tal vez esta vez el peinado no sea particularmente vívido e interesante, solo entiéndelo, gracias ~