Page 1 sur 1

[Résolu] [DB] Public factory method ???

Publié : 30 Oct 2019 22:04
par jmhoubre
Bonsoir,
en parcourant la documentation sur le propriétés implémentés automatiquement, je suis arrivé sur la page suivante, et ce code m'a intrigué :

Code : Tout sélectionner

// This class is immutable. After an object is created,
// it cannot be modified from outside the class. It uses a
// static method and private constructor to initialize its properties.
public class Contact2
{
    // Read-only properties.
    public string Name { get; private set; }
    public string Address { get; }

    // Private constructor.
    private Contact2(string contactName, string contactAddress)
    {
        Name = contactName;
        Address = contactAddress;
    }

    // Public factory method.
    public static Contact2 CreateContact(string name, string address)
    {
        return new Contact2(name, address);
    }
}
J'ai cherché un peu d'information sur la factory method finale, mais c'est très rapidement au-delà de ce que je peux lire pour l'instant.
Ma question : quel intérêt y-a-t-il à déclarer cette méthode de fabrique publique qui appelle le constructeur privé, plutôt que de déclarer le constructeur public ?

Re: [DB] Public factory method ???

Publié : 30 Oct 2019 23:02
par Alesk
La fonction statique CreateContact() est dans ce cas accessible depuis n'importe où dans le code comme ceci :

Code : Tout sélectionner

Contact2 nouveauContact = Contact2.CreateContact("nom","adresse");

[Résolu][DB] Public factory method ???

Publié : 31 Oct 2019 17:59
par jmhoubre
Merci, effectivement, le constructeur ne peut être static.