Descripción del modo de agente
Nota: Como su nombre indica, es usar una clase para reemplazar otra clase para realizar funciones de métodos. Este patrón es un poco similar al modo decorativo. La diferencia es que el modo proxy reemplaza al cliente para inicializar la clase de objeto proxy, mientras que el modo decorativo se ejecuta por interfaz o referencia al parámetro del decorador inicial.
En un lenguaje dinámico orientado a objetos, el modo proxy juega el papel de controlar y modificar la clase proxy, y también juega un papel completo oculto y protegido para la clase proxy; La clase proxy se inicializa indirectamente y se llama solo cuando la necesitamos;
Descripción de la escena:
Un ejemplo muy común de alquilar una casa. Los inquilinos quieren alquilar una casa y el propietario quiere alquilar la casa, pero ni el inquilino ni el propietario tienen mucho tiempo para encontrar una casa o esperar a que alguien vea la casa en casa, por lo que van a buscar un agente de bienes raíces juntos. El propietario confía la habitación a la agencia por alquilar y vender. Cuando hay una persona adecuada, el agente tomará la habitación para verlo y pagará el dinero para alquilarlo, para que el propietario alquile la habitación; El inquilino confía la casa a la agencia para ayudar a la ubicación de la sala requerida por la agencia. Después de que el agente encuentra al inquilino, los dos pagarán el dinero para alquilarlo, para que el inquilino pueda alquilarlo al lugar donde vive;
Código fuente de instancia
Siga el ejemplo anterior para lograr;
1. Categoría de alquiler de propietarios;
La copia del código es la siguiente:
función fangdong () {
this.room = 'Nombre de la habitación';
}
Fangdong.prototype.chuzu = function () {
console.log ('Landhoder Rents Room:' + this.room);
}
2. Clase de agente intermediario:
La copia del código es la siguiente:
función proxy () {
this.fangdong = new Fangdong ();
}
Proxy.prototype.chuzu = function () {
this.fangdong.chuzu ();
console.log ('llevar tarifas de agencia después de alquilar');
}
3. Cómo usar:
La copia del código es la siguiente:
// El inquilino le pide a un agente que ayude a encontrar una casa;
var proxy = new Proxy ();
proxy.chuzu ();
Mira el uso anterior. La clase proxy no está disponible en absoluto en el lado del cliente. Simplemente use la clase proxy, que se puede usar bien en un escenario en el que ciertos procesos lógicos comerciales deben protegerse; El uso del modo proxy se puede usar bien en una clase proxy que debe protegerse;
Otras instrucciones
Al igual que el modo decorador, el modo proxy también refleja bien el principio del pensamiento orientado a objetos de la apertura a la extensión y la modificación de cierre;
Modo proxy, puede usar interfaces o clases abstractas para regular interfaces comunes: (lo siguiente proporciona el modo proxy Java)
1. Método de resumen de clase abstracta;
La copia del código es la siguiente:
Casa de clase pública abstracta {
Public void abstract chuzu ();
}
clase pública Fangdong extiende la casa {
sala de cadenas privadas = "Nombre de la habitación";
@Anular
public void chuzu () {
System.out.println (habitación);
}
}
El poder de la clase pública extiende la casa {
privado fangdong fangdong;
Public proxy () {
this.fangdong = new Hangdong ();
}
@Anular
public void chuzu () {
this.fandong.chuzu ();
System.out.println ("Tarifa de la agencia de pago después del alquiler");
}
}
//usar
Casa casa = nuevo proxy ();
house.chuzu ();
2. Método de interfaz:
La copia del código es la siguiente:
casa de interfaz {
público vacío chuzu ();
}
clase pública fangdong implementa casa {
sala de cadenas privadas = "Nombre de la habitación";
@Anular
public void chuzu () {
System.out.println (habitación);
}
}
El poder de la clase pública implementa la casa {
privado fangdong fangdong;
Public proxy () {
this.fangdong = new Hangdong ();
}
@Anular
public void chuzu () {
this.fandong.chuzu ();
System.out.println ("Tarifa de la agencia de pago después del alquiler");
}
}
//usar
Casa casa = nuevo proxy ();
house.chuzu ();