Modo de apariencia: también conocido como fachada: apariencia de fachada proporciona una interfaz consistente para un conjunto de interfaces del subsistema, lo que hace que este conjunto de subsistemas sea fácil de usar (reduce la complejidad del sistema original al introducir un nuevo papel de apariencia, al tiempo que reduce el acoplamiento entre la clase del cliente y el subsistema).
Fuente de la imagen: Patrón de diseño: la base del software reutilizable orientado a objetos.
lograr
Requisitos del caso: alquilar una casa
Los estudiantes que han experimentado encontrar una casa y alquilar una casa pueden darse cuenta de que encontrar una casa es muy dolorosa. No solo tienen que correr de una comunidad a otra, sino que también tienen que negociar con el propietario (segundo). Así que aprendieron a ser inteligentes y ya no se hablan de puerta en puerta, pero encuentran directamente un agente de bienes raíces como Lianjia y yo amo a mi familia. Tienen una cierta cantidad de suministro de viviendas en sus manos. Solo necesitamos pagarles una comisión, para que puedan negociar con el propietario en nuestro nombre. La mayoría de ellos son muy profesionales, ahorrando tiempo y dinero. En este momento, el agente inmobiliario es una fachada, y el inquilino de la casa es el subsistema del subsistema:
Fachada
Clase de apariencia: Sepa qué subsistemas son responsables de manejar las solicitudes, y proxy la solicitud del cliente al objeto del subsistema apropiado:
clase pública MediaFacade {private Cuiyuanapartment Cuiyuan; Privado XixiaPartment XIXI; XIHUAPARTMENT PRIVADO XIHU; Public MediumFacade () {Cuiyuan = new Cuiyuanapartment ("Comunidad Cuiyuan", 900, 1); xixi = nuevo XIXIAPARTMENT ("XIXI Garden", 1200, 1); xihu = nuevo xihuapartment ("comunidad xihu", 2600, 1); } public void rentinghouse (precio doble) {// El precio es apropiado y hay una casa para formar if (precio> = cuiyuan.getprice () && cuiyuan.getStatus ()! = 0) {system.out.println ("suscríbete" + cuiyuan.getlocation ()); Cuiyuan.setStatus (0); } else if (precio> = xixi.getPrice () && xixi.getStatus ()! = 0) {System.out.println ("suscríbete" + xixi.getLocation ()); xixi.setStatus (0); } else if (precio> = xihu.getprice () && xihu.getStatus ()! = 0) {System.out.println ("Reserva" + xihu.getLocation ()); xihu.setStatus (0); } else {System.out.println ("BID demasiado bajo/sin listado ..."); }}} Subsistema
Recopilación del subsistema: implementar funciones del subsistema y manejar tareas asignadas por objetos de fachada (tenga en cuenta que no hay información de fachada en el subsistema, es decir, no hay referencia de objetos de fachada):
/** * @author Jifang * @since 16/8/23 10:12 AM. */public class xihuApartment {private String Ubicación; precio doble privado; estado privado int; public XihuApartment (ubicación de cadena, precio doble, estado int) {this.location = ubicación; this.price = precio; this.status = status; } public String getLocation () {ubicación de retorno; } public Double GetPrice () {Return Price; } public int getStatus () {Estado de retorno; } public void setstatus (int status) {this.status = status; }} clase XIXIAPARTMENT {ubicación de cadena privada; precio doble privado; estado privado int; public XixiaPartment (ubicación de cadena, precio doble, estado int) {this.location = ubicación; this.price = precio; this.status = status; } public String getLocation () {ubicación de retorno; } public Double GetPrice () {Return Price; } public int getStatus () {Estado de retorno; } public void setstatus (int status) {this.status = status; }} clase CuiyuanApartment {ubicación de cadena privada; precio doble privado; estado privado int; Public CuiyuanApartment (ubicación de cadena, precio doble, estado int) {this.location = ubicación; this.price = precio; this.status = status; } public String getLocation () {ubicación de retorno; } public Double GetPrice () {Return Price; } public int getStatus () {Estado de retorno; } public void setstatus (int status) {this.status = status; }} Cliente
De esta manera, el cliente simplemente contacta a un agente de bienes raíces y nos da una cotización, y nos ayudarán a contactar a todos los propietarios que se encuentran:
Cliente de clase pública {@test public void Client () {MediumFacade fachade = new MediaFacade (); fachade.rentinghouse (800); }}resumen
Los estudiantes que tienen experiencia en el desarrollo orientado a objetos pueden haberlo usado incluso si nunca han oído hablar de los patrones de apariencia, porque él encarna perfectamente la idea del principio de la inversión de dependencia y la ley de DIMIT, que es uno de los patrones más utilizados.
usar
En primer lugar, en la etapa temprana del diseño, debe separar los niveles jerárquicos conscientemente, como una arquitectura clásica de tres capas, que establece una fachada entre capas, que puede proporcionar una interfaz simple para subsistemas complejos y reducir en gran medida el grado de acoplamiento.
En segundo lugar, en la etapa de desarrollo, los subsistemas a menudo se vuelven cada vez más complejos debido a la reconstrucción continua. Agregar fachada puede proporcionar una interfaz simple y reducir las dependencias entre los módulos.
En tercer lugar, al mantener un sistema heredado, el sistema puede ser muy difícil de mantener y expandir, pero debido a que contiene funciones muy importantes, los nuevos requisitos deben confiar en él. En este momento, se puede desarrollar una fachada para el nuevo sistema, proporcionando una interfaz relativamente clara y simple para diseñar un código heredado de alto o alto complejo, lo que permite que el nuevo sistema interactúe con la fachada, y la fachada interactúa con el código heredado para todo el trabajo complicado.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.