Komposition (composition) statt Vererbung in C#
In dieser Lektion baust du eine Bestellung aus kleineren Objekten zusammen, die zusammenarbeiten, statt Vererbung zu verwenden.
Einführung
Komposition (composition) heißt, ein Objekt aus kleineren Objekten zusammenzusetzen, von denen jedes eine klare Aufgabe hat. Im Vergleich zur Vererbung bleiben die Klassen so schlank und leicht änderbar, und du vermeidest komplexe, starre Vererbungshierarchien.
Die Bestellung Order enthält eine Liste von Positionen LineItem, statt von ihnen zu erben. Die Eigenschaft Total überlässt die Berechnung mit Items.Sum(item => item.Price) den einzelnen Positionen. Jedes Objekt trägt nur eine Verantwortung, und der Gesamtbetrag für Buch und Stift ist 35.
Ausführbares C#-Beispiel
using System;
using System.Collections.Generic;
using System.Linq;
record LineItem(string Name, decimal Price);
class Order
{
public List<LineItem> Items { get; } = new();
public decimal Total => Items.Sum(item => item.Price);
}
class Program
{
static void Main()
{
var order = new Order();
order.Items.Add(new("Book", 30m));
order.Items.Add(new("Pen", 5m));
Console.WriteLine(order.Total);
}
}
35