Patrones de diseño - modo de adaptador (Object Adapter)

La preocupación pública número JavaStorm get más emocionante.

La interfaz de una clase en una interfaz de cliente para esperar otra, de manera que las dos clases tuvieron que trabajar juntos por un desajuste de interfaz no pueden trabajar juntos.

análisis de la escena

Por ejemplo, nuestra interfaz 6 mijo teléfono móvil sólo de tipo C interfaz, mientras escucha la música y para la carga. Las interfaces estándar son los teléfonos móviles con un conector de auriculares de 3,5 mm, de carga tipo de puerto c. Ahora bien, si sólo 3,5 mm auriculares para escuchar música en 6 mijo teléfono, necesita un adaptador que se ajusta a nuestro objetivo de interfaz de 3,5 mm para auriculares Tipo de mijo c 6 con el fin de lograr canciones.

Adaptador de patrón en la vida es todavía muy común, como el adaptador de corriente en su ordenador portátil, puede utilizar oscila entre la fuente de alimentación 110 ~ 220V, mientras que el trabajo sigue siendo portátil, y esto es una manifestación de buen modo de adaptador, en pocas palabras, adapter es convertir una interfaz o clase en otra interfaz o clase, por el contrario, el modo de adaptador es un modo de acondicionamiento, ¿por qué? Se adaptée empaquetado en una interfaz de clase de destino, añadir una capa de ropa, embalado en la otra liangniu. Decorador detalles ver la historia artículo.

UML 类 图

Aquí Insertar imagen Descripción

  • objetivo de papel blanco: Esta función se define para ser convertida en otras clases lo que la interfaz, la interfaz es lo que esperamos, el ejemplo es nuestra interfaz mijo 6 tipo c.
  • Adaptador de ese papel: el papel central de la adapter, otros dos papeles ya están presentes papel, y el papel del adaptador es necesario establecer nuevos, su papel es muy simple: el papel de origen en función objetivo, la forma en la conversión? Referencia relacionada través de la herencia o una clase de retención. En el ejemplo es nuestro tipo c convertidor de interfaz.
  • Adaptée función fuente: ¿Quién desea convertir en una función objetivo, el "quién" es la función de origen, que ya existe, clase u objeto, el papel de los envases a través del adaptador que funcione bien, se convertirá en un nuevo papel, hermosa. En el ejemplo que nuestra interfaz de 3,5 mm para auriculares.

código de combate

  1. En primer lugar definimos el papel de destino objetivo. Esa es nuestra interfaz de mijo 6 tipo c. Y la implementación por defecto del teléfono.
/**
 * Project: com-zero-design-stu
 * File created at 2019/6/24 19:45
 */
package com.zero.headfirst.adapter.objects;

/**
 * 通过小米6手机的 type-c 接口听歌,也可以充电(Target 角色)
 * @date 2019/6/24 19:45
 */
public interface XiaoMi6Interface {
    /**
     * 听歌
     */
    void listenMusic();

}

Y mijo 6 funciones por defecto de tipo C para lograr

/**
 * Project: com-zero-design-stu
 * File created at 2019/6/24 20:02
 */
package com.zero.headfirst.adapter.objects;

/**
 * 小米六 type c 接口默认实现功能
 * @date 2019/6/24 20:02
 */
public class XiaoMi6InterfaceImpl implements XiaoMi6Interface {
    @Override
    public void listenMusic() {
        System.out.println("通过 type c 接口的耳机听歌");
    }
}

  1. Adaptée definir nuestro papel, que es nuestra interfaz de auriculares de 3,5 mm.
package com.zero.headfirst.adapter.objects;

/**
 * 普通手机通用 接口 ,对应的3.5mm 耳机孔
 * @date 2019/6/25 16:28
 */
public interface CommonPhoneInterface {
    /**
     * 听歌
     */
    void listenMusic();

}

public class CommonPhoneImpl implements CommonPhoneInterface {
    @Override
    public void listenMusic() {
        System.out.println("标准手机 3.5 mm 耳机接口听歌");
    }

}
  1. A continuación, definimos un convertidor de interfaz, que es el adaptador de papel adaptadores. Aquí se utiliza el modo de adaptador de objeto, que está adaptado para contener una referencia al adaptador. Mientras que el logro de la interfaz de destino.
public class TypeC2HeadphoneAdapter implements XiaoMi6Interface {

    private CommonPhoneInterface commonPhoneInterface;

    public TypeC2HeadphoneAdapter(CommonPhoneInterface commonPhoneInterface) {
        this.commonPhoneInterface = commonPhoneInterface;
    }

    @Override
    public void listenMusic() {
        System.out.println("通过 type c 转 3.5mm适配器将目标 type c 接口适配上3.5mm接口。");
        commonPhoneInterface.listenMusic();
    }

}
  1. prueba
public class Client {
    public static void main(String[] args) {
        //被适配者 3.5毫米耳机
        CommonPhoneInterface headPhone = new CommonPhoneImpl();
        //适配器
        TypeC2HeadphoneAdapter typeC2HeadphoneAdapter = new TypeC2HeadphoneAdapter(headPhone);
        //通过适配器实现了听歌
        typeC2HeadphoneAdapter.listenMusic();
    }
}

resultados de impresión

通过 type c 转 3.5mm适配器将目标 type c 接口适配上3.5mm接口。
标准手机 3.5 mm 耳机接口听歌

resumen

Cuando no podemos modificar la interfaz de la función objetivo, utilizamos una interfaz adaptada para convertir se puede utilizar el modo de adaptador.

Decorator se centra en las mismas mejoras en la interfaz y nuevas características de multiplexación.

Más información sobre el número en cuestión pública.
Aquí Insertar imagen Descripción

Publicado 28 artículos originales · ganado elogios 2 · Vistas 1469

Supongo que te gusta

Origin blog.csdn.net/qq_14855971/article/details/93631545
Recomendado
Clasificación