Mi informacion de contacto
Correo[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Proxy Pattern es un patrón de diseño estructural que controla el acceso a otro objeto mediante la introducción de un objeto proxy. Este objeto proxy puede proporcionar funcionalidad adicional al objeto proxy, como control de acceso, inicialización diferida, registro o acceso a la red.
agente remoto:
agente virtual:
agente de protección:
Orientación inteligente:
El siguiente es un ejemplo de implementación simple del patrón de proxy, que muestra cómo controlar el acceso a un objeto real a través de un objeto proxy.
public interface Subject {
void request();
}
Subject
La interfaz define unrequest
Método, este es el método que tanto el objeto real como el objeto proxy deben implementar.public class RealSubject implements Subject {
public void request() {
System.out.println("RealSubject: Handling request.");
}
}
RealSubject
clase implementadaSubject
Interfazrequest
Método, que representa la clase que realmente maneja la solicitud.public class Proxy implements Subject {
private RealSubject realSubject;
public Proxy(RealSubject realSubject) {
this.realSubject = realSubject;
}
public void request() {
if (this.checkAccess()) {
this.realSubject.request();
this.logAccess();
}
}
private boolean checkAccess() {
// 检查访问权限
System.out.println("Proxy: Checking access prior to firing a real request.");
return true;
}
private void logAccess() {
// 记录请求日志
System.out.println("Proxy: Logging the time of request.");
}
}
Proxy
clase implementadaSubject
interfaz y tiene unRealSubject
objeto.request
En el método, la clase proxy primero verifica los permisos de acceso y luego llama al objeto real.request
método y finalmente registre el registro de solicitudes.public class Client {
public static void main(String[] args) {
RealSubject realSubject = new RealSubject();
Proxy proxy = new Proxy(realSubject);
proxy.request();
}
}
Client
clase creadaRealSubject
yProxy
objeto, a través deProxy
llamada de objetorequest
método para controlar laRealSubject
Acceso.Aislamiento:
seguridad:
Escalabilidad:
Inteligente:
complejidad del código:
Tiempo de respuesta:
Dificultad de diseño:
Client
|
v
Subject <---- Proxy <---- RealSubject
El patrón de proxy proporciona una forma eficaz de controlar y gestionar el acceso a los objetos. Al utilizar servidores proxy, puede agregar varias funciones manteniendo claras las responsabilidades de los objetos comerciales. Este modo es particularmente adecuado para escenarios que requieren control de acceso y otras operaciones de preprocesamiento en objetos comerciales.
Facade Pattern es un patrón de diseño estructural que facilita el uso de subsistemas complejos al proporcionar una interfaz unificada para acceder a un grupo de interfaces en el subsistema. El patrón de fachada define una interfaz de alto nivel que hace que este subsistema sea más fácil de usar.
Simplifique las interfaces para sistemas complejos:
Jerarquía:
Sistema desacoplado:
El siguiente es un ejemplo de implementación simple del patrón Facade, que muestra cómo simplificar el uso de subsistemas a través de clases de fachada.
public class SubsystemA {
public void operationA() {
System.out.println("SubsystemA: operationA");
}
}
public class SubsystemB {
public void operationB() {
System.out.println("SubsystemB: operationB");
}
}
public class SubsystemC {
public void operationC() {
System.out.println("SubsystemC: operationC");
}
}
public class Facade {
private SubsystemA subsystemA;
private SubsystemB subsystemB;
private SubsystemC subsystemC;
public Facade() {
this.subsystemA = new SubsystemA();
this.subsystemB = new SubsystemB();
this.subsystemC = new SubsystemC();
}
public void operation1() {
System.out.println("Facade: operation1");
subsystemA.operationA();
subsystemB.operationB();
}
public void operation2() {
System.out.println("Facade: operation2");
subsystemB.operationB();
subsystemC.operationC();
}
}
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.operation1();
facade.operation2();
}
}
Clase de subsistema:
SubsystemA
, SubsystemB
, y SubsystemC
Es la clase de implementación específica del subsistema y cada clase tiene su propio método de operación único.clase de apariencia:
Facade
Las clases contienen objetos del subsistema y proporcionan interfaces simplificadas.operation1
yoperation2
para llamar a funciones del subsistema.codigo del cliente:
Client
clase aprobadaFacade
clase para llamaroperation1
yoperation2
, simplificando así el uso de subsistemas complejos.Interfaz simplificada:
bajo acoplamiento:
mejores capas:
No cumple con el principio de abrir-cerrar.:
Puede causar problemas de rendimiento:
Client
|
v
Facade ----> SubsystemA
----> SubsystemB
----> SubsystemC
El patrón Facade facilita el trabajo con subsistemas complejos al proporcionar una interfaz simplificada. Es adecuado para escenarios donde es necesario simplificar la interfaz del subsistema, reducir la interacción directa entre el cliente y el subsistema y desacoplar la jerarquía del sistema. Aunque tiene el potencial de violar el principio abierto-cerrado, en la mayoría de los casos sus ventajas superan con creces sus desventajas, lo que hace que el diseño del sistema sea más claro y más fácil de mantener.