Aussehensmodus: Auch als Fassademodus bekannt: Die Aussehensfassade bietet eine konsistente Schnittstelle für eine Reihe von Schnittstellen des Subsystems, wodurch diese Menge von Subsystemen einfach zu verwenden ist (verringert die Komplexität des ursprünglichen Systems durch Einführung einer neuen Erscheinungsrolle und reduziert gleichzeitig die Kopplung zwischen der Client -Klasse und dem Subsystem).
Bildquelle: Designmuster: Die Grundlage für wiederverwendbare objektorientierte Software.
erreichen
Fallanforderungen: Mieten Sie ein Haus
Studenten, die erlebt haben, ein Haus zu finden und ein Haus zu mieten, können erkennen, dass es eine sehr schmerzhafte Sache ist, ein Haus zu finden. Sie müssen nicht nur von Gemeinschaft zu Gemeinschaft rennen, sondern auch mit dem Vermieter verhandeln (zweite). Also lernten sie, klug zu sein und nicht mehr miteinander von Tür zu Tür zu sprechen, sondern finden direkt einen Immobilienmakler wie Lianjia und ich liebe meine Familie. Sie haben eine bestimmte Menge an Wohnungsangebot in ihren Händen. Wir müssen ihnen nur eine Provision bezahlen, damit sie in unserem Namen mit dem Vermieter verhandeln können. Die meisten von ihnen sind sehr professionell und sparen Zeit und Geld. Zu diesem Zeitpunkt ist der Immobilienmakler eine Fassade, und der Mieter des Hauses ist das Subsystem -Subsystem:
Fassade
Erscheinungsklasse: Wissen Sie, welche Subsysteme für die Bearbeitung von Anfragen verantwortlich sind, und stellt die Anfrage des Kunden an das entsprechende Subsystemobjekt vor:
öffentliche Klasse Mediumfacade {private cuiyuanapartment cuiyuan; private xixiapartment xixi; privat xihuapartment xihu; public Mediumfacade () {cuiyuan = new Cuiyuanapartment ("Cuiyuan Community", 900, 1); xixi = new Xixiapartment ("Xixi Garden", 1200, 1); xihu = new XihuAPartment ("Xihu Community", 2600, 1); } public void mietinghouse (Doppelpreis) {// Der Preis ist angemessen und es gibt ein Haus zum Formular if (price> = cuiyuan.getPrice () && cuiyuan.getStatus ()! cuiyuan.setStatus (0); } else if (price> = xixi.getPrice () && xixi.getStatus ()! = 0) {System.out.println ("abonnieren" + xixi.getLocation ()); xixi.setStatus (0); } else if (price> = xihu.getPrice () && xihu.getStatus ()! = 0) {System.out.println ("Reservierung" + xihu.getLocation ()); xihu.setStatus (0); } else {system.out.println ("Bid zu niedrig/no listing ..."); }}} Teilsystem
Subsystemsammlung: Implementieren von Subsystemfunktionen und Handlungsaufgaben, die von Fassadeobjekten zugewiesen werden (Beachten Sie, dass im Subsystem keine Fassadeninformationen vorhanden sind, dh keine Referenz für Fassadenobjekte):
/** * @Author Jifang * @Since 16/8/23 10:12 Uhr. */public class xihuapartment {privater String -Standort; privater Doppelpreis; privater Int -Status; public xihuapartment (String -Standort, Doppelpreis, int Status) {this.location = location; this.price = Preis; this.status = Status; } public String getLocation () {Rückgabesposition; } public double getPrice () {Rückgabepreis; } public int getStatus () {Rückgabestatus; } public void setStatus (int Status) {this.status = Status; }} Klasse xixiapartment {privater String -Speicherort; privater Doppelpreis; privater Int -Status; public xixiapartment (String -Standort, Doppelpreis, int Status) {this.location = location; this.price = Preis; this.status = Status; } public String getLocation () {Rückgabesposition; } public double getPrice () {Rückgabepreis; } public int getStatus () {Rückgabestatus; } public void setStatus (int Status) {this.status = Status; }} Klasse cuiyuanAtment {private String -Standort; privater Doppelpreis; privater Int -Status; public cuiyuanapartment (String -Standort, Doppelpreis, int Status) {this.location = location; this.price = Preis; this.status = Status; } public String getLocation () {Rückgabesposition; } public double getPrice () {Rückgabepreis; } public int getStatus () {Rückgabestatus; } public void setStatus (int Status) {this.status = Status; }} Kunde
Auf diese Weise kontaktiert der Kunde einfach einen Immobilienmakler und gibt uns ein Angebot. Er hilft uns, alle Vermieter zu kontaktieren, die sich treffen:
öffentliche Klasse Client {@test public void Client () {Mediumfacade facade = new Mediumfacade (); Fassade.Rentinghouse (800); }}Zusammenfassung
Schüler, die Erfahrung in der objektorientierten Entwicklung haben, haben ihn möglicherweise benutzt, auch wenn sie noch nie von Aussehensmustern gehört haben, weil er die Idee des Prinzips der Abhängigkeitsinversion und des Gesetzes des Dimits, das eines der am häufigsten verwendeten Muster ist, perfekt verkörpert.
verwenden
Erstens sollten Sie in der frühen Stufe des Designs bewusst hierarchische Ebenen trennen, wie z.
Zweitens werden im Entwicklungsstadium Subsysteme aufgrund einer kontinuierlichen Rekonstruktion häufig immer komplexer. Das Hinzufügen von Fassade kann eine einfache Schnittstelle liefern und Abhängigkeiten zwischen Modulen reduzieren.
Drittens kann das System bei der Aufrechterhaltung eines Legacy -Systems sehr schwer zu pflegen und zu erweitern zu können, aber da es sehr wichtige Funktionen enthält, müssen neue Anforderungen darauf stützen. Zu diesem Zeitpunkt kann für das neue System eine Fassade entwickelt werden, die eine relativ klare und einfache Schnittstelle zum Entwerfen von Roh- oder Hochkomplex-Legacy-Code bietet, sodass das neue System mit Fassade interagieren kann, und die Fassade interagiert mit dem Legacy-Code für alle komplizierten Arbeiten.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.