Préférer la composition (composition) à l'héritage en C#
Dans cette leçon, vous allez construire une commande à partir de petits objets qui collaborent, au lieu d'utiliser l'héritage.
Introduction
La composition (composition) consiste à construire un objet en assemblant des objets plus petits, chacun ayant une tâche claire. Par rapport à l'héritage, cette approche garde les classes légères et faciles à modifier, et évite les hiérarchies d'héritage complexes et rigides.
La commande Order contient une liste de lignes LineItem au lieu d'en hériter. La propriété Total délègue le calcul à chaque ligne avec Items.Sum(item => item.Price). Chaque objet n'a qu'une seule responsabilité, et le total du livre et du stylo est 35.
Exemple C# exécutable
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