J'ai besoin de suggestions sur la façon de construire une interface fluide agissant comme un constructeur, responsable du retour de différents types concrets en fonction des méthodes appelées.
Imaginons que je doive créer l'un des types suivants à l'aide de mon ProductBuilder (de manière fluide) : Product, ServiceProduct, PackagedProduct (tous deux dérivés de Product).
Je pense utiliser une syntaxe fluide comme celle-ci (d'autres suggestions sont les bienvenues) :
Pour créer un produit :
var product = new ProductBuilder()
.Create("Simple product")
.WithPrice(12.5)
Pour créer un ServiceProduct
var product = new ProductBuilder()
.Create("Service product")
.WithPrice(12.5)
.AsServiceProduct()
.ServiceProductSpecificMethods...()
Et PackagedProduct avec un appel à AsPackagedProduct() au lieu de AsServiceProduct(), etc. Vous voyez ce que je veux dire.
Je n'ai pas trouvé d'exemple de bonnes pratiques en la matière. Il n'y a que des exemples où la version finale renvoie le même type.
Des suggestions ?