Ist "Facade Design Pattern" und Java-Schnittstelle konzeptionell gleich? Beide erreichen Abstraktion, indem sie eine einfache Möglichkeit bieten, eine komplexe Funktionalität auszudrücken. Können wir sagen, indem wir Schnittstelle erstellen, folgten wir dem Fassadenmuster?Ist "Facade Design Pattern" und Java-Schnittstelle konzeptionell gleich?
Antwort
Nein, ich bin nicht das Gleiche. Für die Implementierung Fassadenentwurf Muster ist nicht erforderlich, um eine Schnittstelle zu implementieren. Es stellt lediglich eine neue Ebene für die Kommunikation mit Ihren Diensten bereit, z. B. Beispiel.
class ServiceFacade() {
private Service1 service1;
private Service2 service2;
public void update(Entity entity){
service1.update(entity);
service2.update(entity);
}
}
So gibt es Ihnen einen Punkt, um mit allen Diensten zu kommunizieren, die verwandt sind. Anstatt service1.update()
und service2.update()
aufzurufen, rufen Sie einfach facade.update()
an, damit Sie sicher sind, dass beide Dienste die Entität aktualisieren.
Ein weiteres Beispiel: vielleicht die ganze Zeit service
ist aktualisiert müssen Sie refresh()
Sie zwischenspeichern. Dies kann auch in Ihrer Fassade incapsulate sein:
public void update(Entity entity) {
service.update(entity);
cache.refresh();
}
Wenn Ihre Fassadenklasse nur eine Abhängigkeit hat, aber Sie wollen die Funktionalität dieser Abhängigkeit zu erweitern, Sie, dass durch die Umsetzung Dekorierermuster erreichen können. Hier müssen Sie die Schnittstelle implementieren. Schauen wir uns das folgende Beispiel an. Angenommen, Sie haben einen service
und Sie wollen es mit einem einfachen Cache
class CachedService implement Service {
private Service service;
CachedService(Service service, Cache cache){
......
}
......
private Entity get(Long id) {
Entity cachedEntity = cache.get(id);
if (cachedEntity != null){
return cachedEntity;
}
return service.get(id);
}
}
Fassade ist ein konzeptionelles Design-Muster zu erweitern. Es gibt keine spezifische Schnittstelle oder Implementierung.
Es ist nur eine zusätzliche Ebene, auf der Sie Operationen implementieren, die andernfalls die oberen Schichten dazu zwingen würden, für sich selbst irrelevante Implementierungsdetails zu verstehen und mit ihnen gekoppelt zu werden. Eine Fassadenmethode könnte beispielsweise ein Kreditkartenzahlungsprozess sein, bei dem Sie viele Anfragen senden und ihre Antworten verarbeiten müssen, um das Abrechnungsergebnis in einer Datenbank zu speichern.
Ohne eine Fassadenmethode muss jeder Teil Ihres Systems, auf dem Sie eine Zahlung mit einer Kreditkarte durchführen müssen, diese 5-10 Codezeilen noch einmal wiederholen. Irgendwann finden Sie, dass Sie einen zusätzlichen Schritt benötigen, wenn Sie diese Operationen ausführen, und Sie erkennen, dass Sie Tausende Codezeilen umgestalten müssen. Das heißt, Ihre Lösung könnte eine Sicherheitslücke aufweisen und Sie werden nicht in der Lage sein, rechtzeitig auf die Sicherheitsüberprüfung zu reagieren. Eine Fassade kann den Unterschied machen, von einem schlechten Softwareanbieter zu einem ernsthaften und robusten zu sein!
In der entgegengesetzten Seite, wenn Sie Fassaden, richtige implementieren, wenn einige Schicht eine Kreditkartenzahlung durchführen muss es nur spritzt eine Abrechnungs Fassade und es bleibt Agnostiker darüber, wie die Abrechnungsprozess daher gemacht wird Sie wiederholen sich nicht in vielen Teilen Ihres Systems und das Refactoring ist keine langwierige und zeitraubende Aufgabe.
Während Fassadenmuster nicht definiert eine Schnittstelle per se, Fassaden sollten als Schnittstellen definiert werden, da sie auch als Stellvertreter fungieren kann: eine Implementierung Verwendung der Dienstschicht machen könnte direkt und andere eine nennen könnte RESTful API, um die gleiche Aufgabe auszuführen, abhängig von Wer benötigt die Fassade selbst.
Wie auch immer, dieses Designmuster ist nicht spezifisch für die Vereinfachung einer gegebenen Service-Schicht. Sie könnten eine Fassadenmethode eine Methode betrachten, die eine komplexe String-Manipulation vereinfachen kann, die viele reguläre Ausdrücke, Ersetzungen und Einfügungen beinhaltet.
Facade verbirgt die Komplexität des Systems und bietet eine Schnittstelle zum Client, von wo aus der Client auf das System zugreifen kann, was bedeutet, dass Facade Low-Level-Funktionalität vom Client versteckt.
Wird diese Schnittstelle Java-Schnittstelle sein, liegt es an Ihnen.
Gute Frage. Ich wurde einmal in einem Interview gefragt, welches Designmuster ein Interface darstellt, und meine beste Vermutung war Facade. Ich weiß allerdings nicht genau, worauf der Interviewer zu sprechen versuchte.
- 1. Facade Design-Muster in JavaFx
- 2. Was ist der Unterschied zwischen Front Controller Design Pattern und MVC Design Pattern
- 3. Decorator Design Pattern Speicherdiagramm
- 4. Singleton Design Pattern Implementierung
- 5. Was ist das Ghost Design Pattern?
- 6. CFML Design Pattern Ressourcen?
- 7. Was ist LMAX Disruptor Design Pattern?
- 8. Syntax highlight design pattern
- 9. libGDX Design Pattern
- 10. Singleton Design Pattern: Fallstricke
- 11. Was ist der Unterschied zwischen Singleton und Registry Design Pattern
- 12. State Pattern und Domain Driven Design
- 13. Repository Design Pattern mit Dapper
- 14. Composite Design Pattern Diagramm Skizze
- 15. Javascript Strategie Design Pattern Problem
- 16. Observer Design Pattern vs "Listeners"
- 17. Visitor Design Pattern in OCaml
- 18. Warum Abfrage Objekt Design Pattern
- 19. Wählen Sie ASP.NET Design Pattern
- 20. Javas Design by Contract Pattern
- 21. Design Pattern Rich-Code-Basis?
- 22. Observer Design Pattern-Klasse Ausgabe
- 23. Design Pattern Referenzimplementierungen in Ada?
- 24. State Pattern Design mit OOP
- 25. Was ist das Android UI Design Pattern Reader, HNews verwenden?
- 26. Was ist ein Factory Design Pattern in PHP?
- 27. java prototype design pattern objekt kreation
- 28. Verwendet ReentrantLock Decorator Design Pattern in Java?
- 29. Zyklische Abhängigkeit im Visitor Design Pattern
- 30. Wie heißt dieses "Container Design Pattern"?
Ich stimme zu. Einfach die Referenz hinzufügen, die ich immer verwende: http://www.oodesign.com/ – bpedroso
Danke. Also können wir sagen, dass Schnittstelle eine Art ist, "Fassadenmuster" zu verwenden? –
@KaushikLele Wenn Ihre Fassadenklasse dieselbe Schnittstelle wie der darin enthaltene Dienst implementiert, handelt es sich eher um ein Decorator-Muster –