Patrón de diseño "Patrón de adaptador"

¿Cuál es el patrón del adaptador?

El patrón de adaptador es un patrón de diseño estructural que permite que una clase o interfaz existente se convierta en otra interfaz requerida, de modo que las interfaces originalmente incompatibles puedan funcionar juntas. El modo de adaptador generalmente se usa para resolver la incompatibilidad de la interfaz entre los sistemas antiguos y los nuevos, y también se puede usar para encapsular alguna lógica compleja.

Por qué usar el patrón adaptador

Las clases de adaptador se usan cuando desea usar una clase, pero su interfaz no es compatible con otro código.
Si necesita reutilizar tales clases, están en el mismo sistema de herencia y tienen algunos métodos comunes adicionales, pero estos métodos comunes no son comunes a todas las subclases en este sistema de herencia.
A veces necesitamos usar algún código existente o biblioteca de clases, pero no satisfacen nuestras necesidades, entonces podemos usar el patrón del adaptador para convertirlos en la interfaz que necesitamos. El modo de adaptador puede ayudarnos a realizar rápidamente los requisitos funcionales sin cambiar el código existente.

¿Dónde lo usas en el trabajo?

El patrón de adaptador se usa a menudo en programas existentes para permitir que las clases incompatibles cooperen bien.
Los adaptadores pueden modificar la interfaz de los objetos existentes.
Los adaptadores pueden proporcionar diferentes interfaces para objetos encapsulados
En el desarrollo de Android, el patrón de adaptador es muy común. Por ejemplo, ListView es un control de lista de uso común, que necesita un adaptador (adaptador) para cargar y mostrar datos. Podemos definir un adaptador para manejar datos en diferentes formatos y luego convertirlo al formato requerido por ListView. Además, en diferentes versiones del sistema Android, las reglas de nomenclatura de los archivos de diseño también serán diferentes, podemos usar el modo de adaptador para solucionar este problema de compatibilidad.

Ideas de diseño

El patrón de adaptador consta principalmente de tres roles:

  • Interfaz de destino (Target): La interfaz requerida por el cliente, que define la solicitud requerida por el cliente.
  • Interfaz de origen (Adaptado): La interfaz que necesita ser adaptada, que define la interfaz existente, pero no es compatible con la interfaz requerida por el cliente.
  • Adaptador: una clase que convierte una interfaz de origen en una interfaz de destino, implementa la interfaz de destino y contiene una instancia de la interfaz de origen.

La idea central del patrón del adaptador es mantener una instancia de la interfaz de origen en el adaptador y convertir el método de la interfaz de origen en el método de la interfaz de destino. Esta conversión se puede lograr mediante herencia o agregación.

Código

Ahora necesitamos definir una interfaz de 220V a 5V:

    interface Adapter {
    
    //适配器类
        int convert_5v();//装换成5V
    }

Los roles adaptados son generalmente clases existentes que deben adaptarse a las nuevas interfaces. La fuente de alimentación de 220 V está en todas partes en la vida:

    public class Electric {
    
    // 电源
        public int output_220v() {
    
    //输出220V
            return 220;
        }
    }

Necesitamos un adaptador específico, que es un transformador, que puede convertir una salida de 220 V a 5 V:
el primer método es el adaptador de objetos (el más utilizado)

     public class PhoneAdapter1 implements Adapter {
    
    //手机适配器类
        private Electric mElectric;//适配器持有源目标对象

        public PhoneAdapter(Electric electric) {
    
    //通过构造方法传入对象
            mElectric = electric;
        }

        @Override
        public int convert_5v() {
    
    
            System.out.println("适配器一开始工作:");
            System.out.println("输入电压:" + mElectric.output_220v());
            System.out.println("输出电压:" + 5);
            return 5;
        }
    }

El adaptador de clase de segunda vía (implementado por herencia)

public class PhoneAdapter2 extends Electric implements Adapter {
    
    
	@Override
    public int convert_5v() {
    
    
    	int param = output_220v();
    	return suit(param);
    }
	
	/** 
     * 转换操作 
     * 当然你可以在转换中做很多事情(这里只是简单的说明)
     */ 
    private int suit(int param) {
    
     
  		int output = param / 44; 
  		System.out.println("适配器二开始工作:");
        System.out.println("输入电压:" + mElectric.output_220v());
        System.out.println("输出电压:" + output);
        return output; 
    } 
}

clase de prueba

 public void test() {
    
    
    Electric electric = new Electric();
    System.out.println("默认电压:" + electric.output_220v());

    Adapter phoneAdapter1 = new PhoneAdapter1(electric);//传递一个对象给适配器
    System.out.println("适配转换后的电压1:" + phoneAdapter.convert_5v());
    Adapter phoneAdapter2 = new PhoneAdapter2();
    System.out.println("适配转换后的电压2:" + phoneAdapter2.convert_5v());

}

resultado de salida

默认电压:220
适配器一开始工作:
输入电压:220
输出电压:5
适配转换后的电压:5

适配器二开始工作:
输入电压:220
输出电压:5
适配转换后的电压:5

Resumir

El patrón de adaptador es un patrón de diseño de uso común, que puede ayudarnos a cumplir rápidamente los requisitos funcionales sin cambiar el código existente. En el desarrollo de Android, el patrón de adaptador es muy común, especialmente cuando se trata de controles como listas. La idea central del patrón del adaptador es mantener una instancia de la interfaz de origen en el adaptador y convertir el método de la interfaz de origen en el método de la interfaz de destino.

Supongo que te gusta

Origin blog.csdn.net/weixin_45112340/article/details/129703586
Recomendado
Clasificación