Kernprinzipien der Komposition
Swipe um das Menü anzuzeigen
Komposition konzentriert sich darauf, komplexe Objekte durch die Kombination von einfacheren, unabhängigen Komponenten zu erstellen. Anstatt sich auf Vererbung zu verlassen, die starre Hierarchien erzeugt, ermöglicht die Komposition Klassen, durch enthaltene Objekte zusammenzuarbeiten. Dieser Ansatz macht Systeme flexibler, modularer und leichter wartbar, da Komponenten ersetzt oder erweitert werden können, ohne die gesamte Struktur zu beeinträchtigen.
123456789101112131415161718192021222324252627282930313233class Payment: def pay(self, amount): return f"Paid {amount}" class Inventory: def reserve(self, item): return f"{item} reserved" class Shipping: def ship(self, item): return f"{item} shipped" class Order: def __init__(self, item, price, payment, inventory, shipping): self.item = item self.price = price self.payment = payment self.inventory = inventory self.shipping = shipping def process(self): return " | ".join([ self.inventory.reserve(self.item), self.payment.pay(self.price), self.shipping.ship(self.item) ]) order = Order("Laptop", 1200, Payment(), Inventory(), Shipping()) print(order.process())
Order implementiert die Logik für Zahlung, Lagerbestand oder Versand nicht selbst.
Stattdessen besitzt es separate Objekte (Payment, Inventory, Shipping) und nutzt diese, um seine Aufgaben zu erfüllen.
Jede Komponente hat eine Verantwortung, und Order koordiniert lediglich deren Zusammenarbeit.
Wenn Sie ändern möchten, wie Zahlung oder Versand funktioniert, können Sie die jeweilige Komponente austauschen, ohne die Klasse Order zu verändern.
Einige Fallstricke bei der Verwendung von Komposition sind das Erstellen von Gottobjekten, die zu viele Komponenten sammeln und schwer zu verwalten sind, das Durchsickern von Komponenten-APIs durch die äußere Klasse anstatt eine saubere Schnittstelle zu bewahren, sowie das Einführen von versteckter Kopplung, wenn Komponenten zu sehr von den internen Details anderer abhängen.
Ein God-Objekt versucht, zu viel zu übernehmen. Es enthält viele Komponenten und übernimmt zahlreiche Verantwortlichkeiten, was die Klasse schwer verständlich, testbar und wartbar macht.
Dies tritt auf, wenn die äußere Klasse die internen Methoden oder Attribute ihrer Komponenten offenlegt. Anstatt eine eigene, klare Schnittstelle bereitzustellen, zwingt sie die Nutzer dazu, direkt mit internen Objekten zu interagieren.
Komponenten werden durch interne Details eng miteinander verbunden. Eine Änderung an einem Teil führt unerwartet zu Fehlern in einem anderen, da sie voneinander abhängige interne Strukturen statt klarer Verträge nutzen.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen