Mode d'apparence: Également connu sous le nom de mode FACADE: La façade d'apparence fournit une interface cohérente pour un ensemble d'interfaces du sous-système, ce qui rend cet ensemble de sous-systèmes faciles à utiliser (réduit la complexité du système d'origine en introduisant un nouveau rôle d'apparence, tout en réduisant le couplage entre la classe client et le sous-système).
Source de l'image: modèle de conception: la base des logiciels orientés objet réutilisables.
accomplir
Exigences de cas: louer une maison
Les étudiants qui ont expérimenté la recherche d'une maison et la location d'une maison peuvent se rendre compte que trouver une maison est très douloureux. Ils doivent non seulement courir d'une communauté à l'autre, mais doivent également négocier le propriétaire (deuxième). Ils ont donc appris à être intelligent et à ne plus se parler de porte à porte, mais trouvent directement un agent immobilier comme Lianjia et j'aime ma famille. Ils ont une certaine quantité de logement entre leurs mains. Nous n'avons qu'à leur payer une commission, afin qu'ils puissent négocier avec le propriétaire en notre nom. La plupart d'entre eux sont très professionnels, ce qui permet d'économiser du temps et de l'argent. À l'heure actuelle, l'agent immobilier est une façade, et le locataire de la maison est le sous-système du sous-système:
Façade
Classe d'apparence: sachez quels sous-systèmes sont responsables de la gestion des demandes et indique la demande du client à l'objet du sous-système approprié:
classe publique MediumFacade {privé Cuiyuanapartment Cuiyuan; xixiaPartment privé XIXI; xihuapartment privé xihu; public mediumfacade () {Cuiyuan = new Cuiyuanapartment ("Communauté Cuiyuan", 900, 1); xixi = nouveau xixiaPartment ("XIXI Garden", 1200, 1); xihu = nouveau xihuaPartment ("Communauté Xihu", 2600, 1); } public void Rentinghouse (double prix) {// Le prix est approprié et il y a une maison pour former if (prix> = Cuiyuan.getprice () && cuiyuan.getStatus ()! = 0) {System.out.println ("abonnelle" + Cuiyuan.GetLocation ()); Cuiyuan.setstatus (0); } else if (prix> = xixi.getprice () && xixi.getStatus ()! = 0) {System.out.println ("abonnez-vous" + XIXI.GetLocation ()); xixi.setStatus (0); } else if (prix> = xihu.getprice () && xihu.getStatus ()! = 0) {System.out.println ("réservation" + xihu.getLocation ()); xihu.setStatus (0); } else {System.out.println ("Bid Too Low / No Listing ..."); }}} Sous-système
Collection du sous-système: implémentez les fonctions du sous-système et gérez les tâches attribuées par les objets de façade (notez qu'il n'y a pas d'informations de façade dans le sous-système, c'est-à-dire qu'il n'y a pas de référence d'objet de façade):
/ ** * @Author Jifang * @Since 16/8/23 10:12 AM. * / public class XiHuApartment {emplacement de chaîne privée; double prix privé; Statut int privé; public xihuaPartment (emplacement de chaîne, double prix, status int) {this.location = location; this.price = prix; this.status = statut; } public String getLocation () {return emplacement; } public double getPrice () {prix de retour; } public int getStatus () {return status; } public void setStatus (int status) {this.status = statut; }} classe xixiaPartment {emplacement de chaîne privée; double prix privé; Statut int privé; public xixiaPartment (emplacement de chaîne, double prix, status int) {this.location = location; this.price = prix; this.status = statut; } public String getLocation () {return emplacement; } public double getPrice () {prix de retour; } public int getStatus () {return status; } public void setStatus (int status) {this.status = statut; }} classe CuiyuanApartment {emplacement de chaîne privée; double prix privé; Statut int privé; public CuiyuanApartment (emplacement de la chaîne, double prix, status int) {this.location = location; this.price = prix; this.status = statut; } public String getLocation () {return emplacement; } public double getPrice () {prix de retour; } public int getStatus () {return status; } public void setStatus (int status) {this.status = statut; }} Client
De cette façon, le client contacte simplement un agent immobilier et nous donne un devis, et ils nous aideront à contacter tous les propriétaires qui se rencontrent:
Client de classe publique {@Test public void client () {MediumFacade FACADE = new MediumFacade (); façade.Rentinghouse (800); }}résumé
Les étudiants qui ont de l'expérience dans le développement orienté objet peuvent l'avoir utilisé même s'ils n'ont jamais entendu parler de modèles d'apparence, car il incarne parfaitement l'idée du principe de la dépendance inversion et de la loi de Dimit, qui est l'un des modèles les plus couramment utilisés.
utiliser
Tout d'abord, au début de la conception, vous devez consciemment séparer les niveaux hiérarchiques, tels qu'une architecture classique à trois couches, établissant une façade entre les couches, qui peut fournir une interface simple pour les sous-systèmes complexes et réduire considérablement le degré de couplage.
Deuxièmement, au stade de développement, les sous-systèmes deviennent souvent de plus en plus complexes en raison de la reconstruction continue. L'ajout de façade peut fournir une interface simple et réduire les dépendances entre les modules.
Troisièmement, lors du maintien d'un système hérité, le système peut être très difficile à maintenir et à se développer, mais parce qu'il contient des fonctions très importantes, les nouvelles exigences doivent s'y fier. À l'heure actuelle, une façade peut être développée pour le nouveau système, fournissant une interface relativement claire et simple pour la conception du code hérité rugueux ou élevé, permettant au nouveau système d'interagir avec la façade et la façade interagit avec le code hérité pour tous les travaux complexes.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.