Patrones de diseño (7) - modo de adaptador

Adapter (Adaptador) modo, la interfaz de una clase, se convierte en otra interfaz a las expectativas del cliente. Adaptador de modo que la interfaz original no es compatible con la clase puede colaborar sin problemas. Este modo permite a los clientes a desacoplarse de la interfaz, si en algún momento, queremos cambiar la interfaz, el adaptador puede ser cambiado hasta parte del paquete, los clientes no tienen que tratar con diferentes interfaces y cada modificación.

La imagen muestra el modo de adaptador de clase

Directamente se describirá un ejemplo específico siguiente

Tenemos una interfaz de pato

public interface Duck {
	public void quack();
	public void fly();
}

También hay una interfaz de pavo

public interface Turkey {
	public void gobble();
	public void fly();
}

Ahora supongamos que estamos perdiendo objetos pato, pavo le gustaría utilizar algunos de los objetos de hacerse pasar. Obviamente, debido a que el pavo diferentes interfaces, por lo que no podemos hacer uso de ellos abiertamente. Esto requiere un adaptador de escritura

import java.util.Random;

public class DuckAdapter implements Turkey {//让鸭子看起来像火鸡
	Duck duck;
	Random rand;
 
	public DuckAdapter(Duck duck) {
		this.duck = duck;
		rand = new Random();
	}
    
	public void gobble() {
		duck.quack();
	}
  
	/* 虽然两个接口都具备fly()方法,但火鸡飞行距离很短,不像鸭子可以长途飞行。 要让鸭子的飞行和火鸡的飞行能够对应,必须连续五次调用火鸡的fly()来完成。 */
	public void fly() {
		if (rand.nextInt(5)  == 0) {
		     duck.fly();
		}
	}
}

Adaptador patrón está lleno de principios de diseño buena OO: composición objeto de modificar el paquete de interfaz es más en forma: Este enfoque tiene la ventaja añadida de que se adapta cualquier subclase se puede usar con el adaptador. Además, este modelo se une el cliente y las interfaces entre sí, en lugar de atar y darse cuenta de que podemos utilizar varios adaptadores, cada uno de los cuales es responsable de convertir el fondo de la clase de los diferentes grupos. Como alternativa, también se puede añadir nuevas implementaciones, siempre y cuando cumplan con los objetivos de las interfaces pueden ser.

De hecho, un total de "dos tipos" adaptador: Objeto del adaptador y el adaptador de clase , anteriormente descrito es un adaptador de objeto, el adaptador de la clase, es necesario herencia múltiple para lograrlo, y la clase Java no soporta herencia múltiple, por lo que no hacemos pagar más descripción dada aquí único adaptador diagrama de clases de clases:

Publicados 295 artículos originales · ganado elogios 37 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/tianshan2010/article/details/104713988
Recomendado
Clasificación