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

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

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

Message par jmhoubre » 30 Oct 2019 22:04

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 ?
Dernière édition par jmhoubre le 31 Oct 2019 17:59, édité 1 fois.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB] Public factory method ???

Message par Alesk » 30 Oct 2019 23:02

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");

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

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

Message par jmhoubre » 31 Oct 2019 17:59

Merci, effectivement, le constructeur ne peut être static.

Répondre

Revenir vers « Scripting »