New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

github.com/deemount/gopatterns/design-patterns/StructuralDesignPatterns/Decorator

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/deemount/gopatterns/design-patterns/StructuralDesignPatterns/Decorator

  • v0.0.0-20230226113255-bb81c7d8156f
  • Source
  • Go
  • Socket score

Version published
Created
Source

Decorator

Decorator ist ein strukturelles Entwurfsmuster, das es mir ermöglicht, bestehenden Objekten dynamisch neues Verhalten hinzuzufügen, indem Ich sie in spezielle Wrapper-Objekte einbette. Diese Wrapper fungieren als Erweiterung meines Codes, die zur Wiederverwendung von Funktionen beitragen und den bestehenden Code nicht verändert.

Beziehung zu anderen Mustern

  • Composite und Decorator haben ähnliche Strukturdiagramme, da sie beide auf rekursiver Komposition basieren, um eine unbestimmte Anzahl von Objekten zu organisieren.

  • Ein Decorator ist wie ein Composite, hat aber nur eine untergeordnete Komponente. Es gibt einen weiteren wichtigen Unterschied: Decorator fügt dem umhüllten Objekt zusätzliche Aufgaben hinzu, während Composite lediglich die Ergebnisse seiner Kinder "zusammenfasst". Muster können jedoch auch hilfreich sein: Ich kann den Decorator verwenden, um das Verhalten eines bestimmten Objekts im Composite-Baum zu erweitern.

  • Mit dem Decorator kann ich die Struktur eines Objekts ändern, während Ich mit der Strategie sein Innenleben veränderen kann.

  • Decorator und Proxy haben ähnliche Strukturen, aber sehr unterschiedliche Zwecke. Beide Muster beruhen auf dem Prinzip der Komposition, wonach ein Objekt einen Teil der Arbeit an ein anderes delegieren sollte. Der Unterschied besteht darin, dass ein Proxy normalerweise den Lebenszyklus seines Dienstobjekts selbst verwaltet, während die Komposition des Decorators immer vom Client kontrolliert wird.

Pro

  • Das Verhalten eines Objekts/Strukts kann erweitert/geändert werden, ohne eine neue Struktur zu erstellen.
  • Hinzufügen oder Entfernen von Verantwortlichkeiten eines Objekts zur Laufzeit.
  • Ermöglicht die Kombination mehrerer Verhaltensweisen durch Umhüllen eines Objekts mit mehreren Dekoratoren.

Contra

  • Es ist schwierig, einen bestimmten Wrapper aus dem Wrapper-Stack zu entfernen.
  • Es ist schwierig, einen Dekorator so zu implementieren, dass sein Verhalten nicht von der Reihenfolge im Dekoratorstapel abhängt.
  • Der anfängliche Konfigurationscode für die Schichten kann hässlich aussehen.

FAQs

Package last updated on 26 Feb 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc